首页 文章

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

提问于
浏览
5

我在运行我的UWP应用程序时尝试创建 .

我有以下代码:

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();

但是这条线:

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

抛出以下错误:

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

this link: UWP File access permissions它说明如下:

创建新应用程序时,默认情况下可以访问以下文件系统位置:应用程序安装目录 . 用户系统上安装应用程序的文件夹 . 在应用程序的安装目录中访问文件和文件夹有两种主要方法:您可以检索代表应用程序安装目录的StorageFolder,如下所示:Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation

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

2 回答

  • 4

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

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

    尝试使用本地文件夹:

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

  • 12

    使用 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}" 您可以在应用程序运行时在此位置创建文件夹/文件 .

相关问题