<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блоги: заметки с тегом uwp-access-to-filesystem</title>
<link>https://blogengine.ru/blogs/tags/uwp-access-to-filesystem/</link>
<description>Автоматически собираемая лента заметок, написанных в блогах на Эгее</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.0 (v4079e)</generator>

<itunes:subtitle>Автоматически собираемая лента заметок, написанных в блогах на Эгее</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>Чтение файла в приложении UWP</title>
<guid isPermaLink="false">125683</guid>
<link>https://llemilio.ru/all/chtenie-fayla-v-prilozhenii-uwp/</link>
<pubDate>Mon, 29 Jan 2024 16:43:58 +0500</pubDate>
<author>Llemilio</author>
<comments>https://llemilio.ru/all/chtenie-fayla-v-prilozhenii-uwp/</comments>
<description>
&lt;p&gt;&lt;a href="https://llemilio.ru/"&gt;Llemilio&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Решил я сделать красиво и с нуля писать приложение на Universal Windows Platform (UWP) по всем канонам. Однако, в Microsoft каноны пока еще не такие строгие как у РПЦ, поэтому даже из официальной справки половина кода не работает. А это еще чатжпт не подключили.... о каких ревизиях вообще может идти речь. Ладно, я отвлекся.&lt;/p&gt;
&lt;p&gt;Нужно открыть файл хотябы для чтения. В справке предлагается добавить следующий код в Package.appxmanifest&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;Package
    ...
    xmlns:rescap=&amp;quot;http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities&amp;quot;
    IgnorableNamespaces=&amp;quot;... rescap&amp;quot;&amp;gt;
...
&amp;lt;Capabilities&amp;gt;
    &amp;lt;rescap:Capability Name=&amp;quot;broadFileSystemAccess&amp;quot;/&amp;gt;
&amp;lt;/Capabilities&amp;gt;
&amp;lt;/Package&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Но он не работает, даже не распознается как безошибочный.&lt;/p&gt;
&lt;p&gt;Long story short, чтобы не томить. Вот готовый апплет:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation =
    Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(&amp;quot;.txt&amp;quot;);

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null) {
  // Приложение теперь вроде как должно иметь доступ 
  // к файлу... но смотрите catch блок
  Log(&amp;quot;Выбранный файл: &amp;quot; + file.Name);
} else {
  Log(&amp;quot;Операция выбора файла оменена&amp;quot;);
  return;
}

try {
  var storageFile = await StorageFile.GetFileFromPathAsync(file.Path);
  using (StreamReader reader = new StreamReader(bs)) {
    string line;
    while ((line = reader.ReadLine()) != null) {
      Log(&amp;quot;Строка прочитана: &amp;quot; + line);
    }
  }
}
}
catch (UnauthorizedAccessException) {
  // Чертов UWP не заводится пока ему не дашь 
  // полный доступ к файловой системе.
  // Да так быть не должно, но имеем то что имеем
  await Windows.System.Launcher.LaunchUriAsync(
      new Uri(&amp;quot;ms-settings:privacy-broadfilesystemaccess&amp;quot;));
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;UPDATE Оказалось, что проекты из песочницы (те которые не загружены из МС стора, а например собраны локально) вообще не могут получать доступ к файлам за пределами папки в которую контент нужно еще загрузить программным путем — VS во время сборки делает это криво. И если какой-то доступ приложение получило, то это скорее баг чем победа. О боже, королеву ты не сохранил, сохрани хотя бы меня!&lt;/p&gt;
</description>
</item>


</channel>
</rss>