{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Llemilio: заметки с тегом uwp-access-to-filesystem",
    "_rss_description": "Баги моего времени",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/llemilio.ru\/tags\/uwp-access-to-filesystem\/",
    "feed_url": "https:\/\/llemilio.ru\/tags\/uwp-access-to-filesystem\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Llemilio",
            "url": "https:\/\/llemilio.ru\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "12",
            "url": "https:\/\/llemilio.ru\/all\/chtenie-fayla-v-prilozhenii-uwp\/",
            "title": "Чтение файла в приложении UWP",
            "content_html": "<p>Решил я сделать красиво и с нуля писать приложение на Universal Windows Platform (UWP) по всем канонам. Однако, в Microsoft каноны пока еще не такие строгие как у РПЦ, поэтому даже из официальной справки половина кода не работает. А это еще чатжпт не подключили.... о каких ревизиях вообще может идти речь. Ладно, я отвлекся.<\/p>\n<p>Нужно открыть файл хотябы для чтения. В справке предлагается добавить следующий код в Package.appxmanifest<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\n&lt;Package\n    ...\n    xmlns:rescap=&quot;http:\/\/schemas.microsoft.com\/appx\/manifest\/foundation\/windows10\/restrictedcapabilities&quot;\n    IgnorableNamespaces=&quot;... rescap&quot;&gt;\n...\n&lt;Capabilities&gt;\n    &lt;rescap:Capability Name=&quot;broadFileSystemAccess&quot;\/&gt;\n&lt;\/Capabilities&gt;\n&lt;\/Package&gt;<\/code><\/pre><p>Но он не работает, даже не распознается как безошибочный.<\/p>\n<p>Long story short, чтобы не томить. Вот готовый апплет:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">var picker = new Windows.Storage.Pickers.FileOpenPicker();\npicker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;\npicker.SuggestedStartLocation =\n    Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;\npicker.FileTypeFilter.Add(&quot;.txt&quot;);\n\nWindows.Storage.StorageFile file = await picker.PickSingleFileAsync();\nif (file != null) {\n  \/\/ Приложение теперь вроде как должно иметь доступ \n  \/\/ к файлу... но смотрите catch блок\n  Log(&quot;Выбранный файл: &quot; + file.Name);\n} else {\n  Log(&quot;Операция выбора файла оменена&quot;);\n  return;\n}\n\ntry {\n  var storageFile = await StorageFile.GetFileFromPathAsync(file.Path);\n  using (StreamReader reader = new StreamReader(bs)) {\n    string line;\n    while ((line = reader.ReadLine()) != null) {\n      Log(&quot;Строка прочитана: &quot; + line);\n    }\n  }\n}\n}\ncatch (UnauthorizedAccessException) {\n  \/\/ Чертов UWP не заводится пока ему не дашь \n  \/\/ полный доступ к файловой системе.\n  \/\/ Да так быть не должно, но имеем то что имеем\n  await Windows.System.Launcher.LaunchUriAsync(\n      new Uri(&quot;ms-settings:privacy-broadfilesystemaccess&quot;));\n}<\/code><\/pre><p>UPDATE Оказалось, что проекты из песочницы (те которые не загружены из МС стора, а например собраны локально) вообще не могут получать доступ к файлам за пределами папки в которую контент нужно еще загрузить программным путем — VS во время сборки делает это криво. И если какой-то доступ приложение получило, то это скорее баг чем победа. О боже, королеву ты не сохранил, сохрани хотя бы меня!<\/p>\n",
            "date_published": "2024-01-29T14:43:58+03:00",
            "date_modified": "2024-02-07T12:51:21+03:00",
            "tags": [
                "uwp-access-to-filesystem"
            ],
            "_date_published_rfc2822": "Mon, 29 Jan 2024 14:43:58 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "12",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4171,
    "_e2_ua_string": "Aegea 11.4 (v4171e)"
}