{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом uwp-access-to-filesystem",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/blogengine.ru\/blogs\/tags\/uwp-access-to-filesystem\/",
    "feed_url": "https:\/\/blogengine.ru\/blogs\/tags\/uwp-access-to-filesystem\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/blogengine.ru\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "125683",
            "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;\r\n&lt;Package\r\n    ...\r\n    xmlns:rescap=&quot;http:\/\/schemas.microsoft.com\/appx\/manifest\/foundation\/windows10\/restrictedcapabilities&quot;\r\n    IgnorableNamespaces=&quot;... rescap&quot;&gt;\r\n...\r\n&lt;Capabilities&gt;\r\n    &lt;rescap:Capability Name=&quot;broadFileSystemAccess&quot;\/&gt;\r\n&lt;\/Capabilities&gt;\r\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();\r\npicker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;\r\npicker.SuggestedStartLocation =\r\n    Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;\r\npicker.FileTypeFilter.Add(&quot;.txt&quot;);\r\n\r\nWindows.Storage.StorageFile file = await picker.PickSingleFileAsync();\r\nif (file != null) {\r\n  \/\/ Приложение теперь вроде как должно иметь доступ \r\n  \/\/ к файлу... но смотрите catch блок\r\n  Log(&quot;Выбранный файл: &quot; + file.Name);\r\n} else {\r\n  Log(&quot;Операция выбора файла оменена&quot;);\r\n  return;\r\n}\r\n\r\ntry {\r\n  var storageFile = await StorageFile.GetFileFromPathAsync(file.Path);\r\n  using (StreamReader reader = new StreamReader(bs)) {\r\n    string line;\r\n    while ((line = reader.ReadLine()) != null) {\r\n      Log(&quot;Строка прочитана: &quot; + line);\r\n    }\r\n  }\r\n}\r\n}\r\ncatch (UnauthorizedAccessException) {\r\n  \/\/ Чертов UWP не заводится пока ему не дашь \r\n  \/\/ полный доступ к файловой системе.\r\n  \/\/ Да так быть не должно, но имеем то что имеем\r\n  await Windows.System.Launcher.LaunchUriAsync(\r\n      new Uri(&quot;ms-settings:privacy-broadfilesystemaccess&quot;));\r\n}<\/code><\/pre><p>UPDATE Оказалось, что проекты из песочницы (те которые не загружены из МС стора, а например собраны локально) вообще не могут получать доступ к файлам за пределами папки в которую контент нужно еще загрузить программным путем — VS во время сборки делает это криво. И если какой-то доступ приложение получило, то это скорее баг чем победа. О боже, королеву ты не сохранил, сохрани хотя бы меня!<\/p>\n",
            "date_published": "2024-01-29T16:43:58+05:00",
            "date_modified": "2024-02-07T14:51:21+05:00",
            "tags": [
                "uwp-access-to-filesystem"
            ],
            "author": {
                "name": "Llemilio",
                "url": "https:\/\/llemilio.ru\/",
                "avatar": ""
            },
            "_date_published_rfc2822": "Mon, 29 Jan 2024 16:43:58 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "125683",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}