如何在UWP应用程序中创建文件夹?

时间:2016-04-11 13:27:50

标签: c# win-universal-app uwp windows-10-universal

我正在尝试在运行UWP应用程序时创建。

我有以下代码:

$('#Menunavigation').on('change', 
  function() {
    alert('Clicked.');
  }
);

但是这句话:

string documentsPath = Package.Current.InstalledLocation.Path;
System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
Task.Factory.StartNew(async () =>
{
    await Package.Current.InstalledLocation.CreateFolderAsync("Data");
    mre.Set();
});
mre.WaitOne();

引发以下错误:

  

“访问被拒绝。(HRESULT异常:0x80070005   (E_ACCESSDENIED))“}

查看this link: UWP File access permissions,它说明了以下内容:

  

创建新应用时,您可以访问以下文件系统   默认位置:

     

应用程序安装目录。安装应用程序的文件夹   在用户的系统上。

     

有两种主要方法可以访问应用中的文件和文件夹   安装目录:

     

您可以检索代表您应用安装的StorageFolder   目录,像这样:

await Package.Current.InstalledLocation.CreateFolderAsync("Data");

所以我认为我的代码会起作用。所以我的问题是如何使用UWP应用程序创建文件夹?

2 个答案:

答案 0 :(得分:12)

您无法在InstalledLocation中创建文件夹MSDN

  

...应用程序的安装目录是只读位置......

尝试使用本地文件夹:

ApplicationData.Current.LocalFolder.CreateFolderAsync("Data");

答案 1 :(得分:4)

使用 ApplicationData.Current.LocalFolder.Path 而不是 Package.Current.InstalledLocation.Path

string documentsPath = ApplicationData.Current.LocalFolder.Path;

        System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
        Task.Factory.StartNew(async () =>
        {
            await ApplicationData.Current.LocalFolder.CreateFolderAsync("Data");
            mre.Set();
        });
        mre.WaitOne();

Package.Current.InstalledLocation.Path为您提供了使用visual studio调试器运行所有代码和资源的路径,该调试器通常是源代码的调试文件夹。这不能通过UWP API库访问,这通常在.Net应用程序(win32)中可用。

UWP应用对文件夹“ C:\ Users \ {userprofile} \ AppData \ Local \ Packages \ {packagenameguid} \” 具有读/写权限您可以创建应用程序运行时在此位置的文件夹/文件。