C# 如何检测UWP应用程序中是否重命名或删除了StorageFile?
对于Windows应用商店应用程序:在应用程序中打开的C# 如何检测UWP应用程序中是否重命名或删除了StorageFile?,c#,windows-10,uwp,storagefile,C#,Windows 10,Uwp,Storagefile,对于Windows应用商店应用程序:在应用程序中打开的StorageFile在应用程序外是否被重命名或删除,如何检测 我有一个Windows 10 UWP应用程序在桌面上运行。该应用程序允许用户打开和编辑文档 我尝试过的事情: 检查修改日期: 我尝试检查storageFile.GetBasicPropertiesAsync()。(我假设它使用内存版本,不检查磁盘上的文件) 重新打开存储文件: 然后,我尝试使用StorageFile.getfilefrompathsync(file.Pat
StorageFile
在应用程序外是否被重命名或删除,如何检测
我有一个Windows 10 UWP应用程序在桌面上运行。该应用程序允许用户打开和编辑文档
我尝试过的事情:
- 检查修改日期:
- 我尝试检查
storageFile.GetBasicPropertiesAsync()。(我假设它使用内存版本,不检查磁盘上的文件)
- 我尝试检查
- 重新打开存储文件:
- 然后,我尝试使用
重新打开该文件。这在第一次正确地抛出了一个StorageFile.getfilefrompathsync(file.Path)
李>FileNotFoundException
- 但是,随后此操作失败,出现了
未经授权的访问/权限被拒绝
异常。这有点道理,因为我需要用户在FileOpenPicker中选择文件,让我的应用程序获得使用它的权限
- 然后,我尝试使用
- 监视父文件夹:
- 这一次没走远。我尝试使用
,但无法从StorageFile实例访问父文件夹(同样,这是有道理的,因为我的应用程序没有访问父文件夹的权限)StorageFolder.CreateFileQuery()
- 这一次没走远。我尝试使用
System.IO.File.Exists(字符串)
。
找到了一种检查文件是否被删除的简便方法:
public async bool StorageFileExists(StorageFile file)
{
try
{
var stream = await StorageFile.OpenReadAsync();
stream.Dispose();
return true;
}
catch (FileNotFoundException e)
{
return false;
} //Other exceptions are not caught on purpose and should propagate
}