我正在尝试确保将文件复制到另一个位置 - 出于SQLite的原因(请参阅UWP App SQLite Access database in Documents Library) .
麻烦的是,如果我删除对目标StorageFile的访问(即拔出USB棒然后尝试保存),StorageFile的CopyAndReplaceAsync方法将不会提及文件是否写入失败 .
因此,尝试打开文件以测试它是否已成功编写(使用GetFileFromPathAsync)会抛出COM异常(因为文件不存在),但即使在捕获错误之后它也永远不会结束任务 .
我试图弄清楚是否有更好的方法来做到这一点 - 我尝试使用FileIO做同样的事情,但即使我正在编写的文件在FutureAccessList中,它似乎也不想授予访问权限 .
任何想法/并发症/方法我只是没有正确使用?
我的相关代码如下:
try {
if (file != null) {
await file.CopyAndReplaceAsync(App.SaveFile);
var newFile = await StorageFile.GetFileFromPathAsync(App.SaveFile.Path);
}
//user prompt below
1 回答
根据您的描述,您似乎想要检查文件是否存在 . 如果是这样,您可以使用StorageFile.IsAvailable属性或StorageFolder.TryGetItemAsync方法 .
参考Common questions and answers about files and app data, part 2: Files:
虽然本文是为Windows 8.1和Windows Phone 8.1编写的,但它仍适用于UWP应用程序 . 在UWP中,StorageFile.IsAvailable属性和StorageFolder.TryGetItemAsync方法是通用API,它们可以在所有Windows 10设备中使用 .