gpt4 book ai didi

c# - 什么是无需在 WinRT、Win8 中使用 Open FilePicker 即可打开文件进行写入的方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:09 27 4
gpt4 key购买 nike

我已经在这方面工作了几天,并且为此奋斗了两年​​。粗略地说,我有一个应用程序,用户可以在其中打开一个文件,编辑很长一段时间,然后保存或暂停直到稍后。我有一个有效的自动保存功能,但是,我也想要一个自动存档功能(以防用户想要自动保存到备份文件,而不是覆盖当前文件)。

粗略地说,我想在编辑文件时创建一个新文件,希望是在原始文件所在的位置。但是,我很快就放弃了,因为 Microsoft 不允许在没有显式选择器访问权限的情况下访问 Skydrive、其他目录等进行写入。

但是,我想也许我可以使用文档库。但是这里的任何使用似乎都会给我 NullReferenceException。这是我正在尝试的示例(注意 .ged 文件与我的应用相关联):

            string backupFileName = openStorageFile + "-backup.ged";
StorageFolder currentFolder;
StorageFile fileCopy;

try
{
// try to set up Backup file in the same directory as the source file
currentFolder = await selectedFile.GetParentAsync();
fileCopy = await openStorageFile.CopyAsync(currentFolder, backupFileName, NameCollisionOption.ReplaceExisting);

// Success return
return;
}
catch
{
// The failed... try something else
Debug.WriteLine("INFO: Failed to set up backup file in the source file's directory, trying backup option");
}

try
{
// try to set up Backup file in the same directory as the source file
fileCopy = await openStorageFile.CopyAsync(KnownFolders.DocumentsLibrary, backupFileName, NameCollisionOption.ReplaceExisting);
}
catch
{
// The failed... try something else
Debug.WriteLine("INFO: Failed to set up backup file in the source document library, no other option available");
}
}

粗略地说,第一次从原始文件调用 GetParentAsync 是有效的。但是到该目录的 CopyAsync 失败并出现 NullReferenceException。

第二次尝试使用 DocumentsLibrary。它在 CopyAsync 上也失败并出现 NullReferenceException。

我试过这个: Windows 8 StorageFile.GetFileFromPathAsync Using UNC Path

根据 MSDN,只要我的应用程序与 .ged 文件相关联(确实如此),我就不会有问题。还有什么可以尝试的吗?

最佳答案

您需要添加 documentsLibrary 功能才能访问文档库。不鼓励使用此功能,并且不会在 Visual Studio 的 list 设计器中公开。您必须直接编辑 package.appxmanifest 的 xml

  <Capabilities>
<Capability Name="internetClient" />
<Capability Name="documentsLibrary" />
</Capabilities>

我确认您的代码在我添加后保存到文档库中,并修复了 backupFileName setter 以使用 openStorageFile 的名称。从代码中的其他引用来看,openStorageFile 是 StorageFile 而不是字符串。

string backupFileName = openStorageFile.Name + "-backup.ged";

参见 Special use capabilities section如果您需要应用程序经过商店认证而不是侧载,则功能文档的更多限制使用文档库。

我会将备份保存在应用程序的本地数据中,而不是文档库中。该应用可以公开一种在用户需要时从备份恢复到选定位置的方法。

关于c# - 什么是无需在 WinRT、Win8 中使用 Open FilePicker 即可打开文件进行写入的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26099297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com