我目前正在开发Windows 10 UWP应用程序 . 应用程序需要检查是否存在名为“01-introduction”的某个PDF文件,如果存在则打开它 . 如果文件不存在,我已经有了代码 . 以下代码是我目前拥有的:
try
{
var test = await DownloadsFolder.CreateFileAsync("01-Introduction.pdf", CreationCollisionOption.FailIfExists);
}
catch
{
}
此代码无法正常工作,因为检查文件是否存在此处,我尝试创建该文件 . 但是,如果该文件尚不存在,则将创建一个空文件 . 如果文件不存在,我不想创建任何内容,只要打开PDF就可以 .
如果可能的话,我想查看名为“我的手册”的下载文件夹中的文件夹 .
任何帮助将不胜感激 .
11 回答
但不支持Win8 / WP8.1
https://blogs.msdn.microsoft.com/shashankyerramilli/2014/02/17/check-if-a-file-exists-in-windows-phone-8-and-winrt-without-exception/
有两种方法
1)您可以使用
StorageFolder.GetFileAsync()
,因为Windows 8.1和WP 8.1设备也支持此功能 .2)或者您可以使用仅支持Windows 10 UWP的
FileInfo.Exists
.System.IO.File.Exists也是UWP方式 . 我现在在Windows IOT中测试 . 它只是工作 .
这对我的情况有帮助:
您可以使用System.IO.File . 例:
我正在做一个Win10 IoT核心UWP应用程序,我必须检查文件长度而不是"Exists"因为
CreateFileAsync()
已经立即创建一个空文件存根 . 但我之前需要调用以确定文件所在的整个路径 .所以这是:
这对我来说在Windows 10上运行我的UWP C#应用程序...
这样
System.IO.File.Exists(filePath)
我无法测试DocumentLibrary
因为KnownFolders.DocumentsLibrary.Path
返回空字符串下一个解决方案很慢
await DownloadsFolder.GetFileAsync("01-Introduction.pdf")
恕我直言,最好的方法是收集文件夹中的所有文件并检查文件名是否存在 .
在这种情况下,您可以使用FileInfo类 . 它有一个名为FileInfo.Exists()的方法,它返回一个bool结果
https://msdn.microsoft.com/en-us/library/system.io.fileinfo.exists(v=vs.110).aspx
编辑:
如果要检查文件是否存在,则需要创建一个StorageFile对象并调用其中一个GetFile ....方法 . 如:
我快速查看下载文件夹路径但没有快乐,但GetFile方法应该为您提供所需的答案
在Window 10上,对我来说,这是最“优雅”的方式:
或者,作为扩展,如果您愿意并将广泛使用它: