无法读取我的应用程序目录之外的任何文件或目录

Cannot read any files or directories outside of my application directory

这真是个恼人的问题,它会让我抓狂。我喜欢阅读文件、目录等信息。但是我的应用程序无法在其 运行 所在的文件夹之外找到任何内容。

我正在使用 Visual Studio 2015 并开发 Windows 通用应用程序。

如果我像 "Assets" 和任何其他文件夹一样更改我的应用程序 运行 文件夹内的目录,此例程将非常有效。但是在我的应用程序文件夹之外结果是零,甚至没有任何错误:-(

好的,这是简单的代码,我做错了什么?

private void GetThem_Click(object sender, RoutedEventArgs e)
{
    string myDir = @"c:\mydir\";
    string[] files;
    files = Directory.GetFiles(myDir,"*.jpg");

    foreach (string stuff in files)
    {
        RESULT.Text = RESULT.Text + stuff + " , ";
    }
}

快速搜索会给您 :无法像经典桌面应用程序那样访问文件系统。 @Rico Suter 的回答向您解释了您可以访问什么以及如何访问:

  • Directories which are declared in the manifest file (e.g. Documents, Pictures, Videos folder)
  • Directories and files which the user manually selected with the FileOpenPicker or FolderPicker
  • Files from the FutureAccessList or MostRecentlyUsedList
  • Files which are opened with a file extension association or via sharing

用户选择文件后,您可以将其添加到 MostRecentlyUsedList 或 FutureAccessList,以便稍后使用来自 MSDN 的代码片段 (C#) 再次使用它:

StorageFile file = await savePicker.PickSaveFileAsync();
if (file != null)
{
   // Add to MRU with metadata (For example, a string that represents the date)
   string mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList.Add(file, "20120716");

   // Add to FA without metadata
   string faToken = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(file);  
}

然后存储检索到的令牌,因为您将需要它来使用 GetFileAsync(token)

访问文件