Har*_*san 48 c# filenotfoundexception microsoft-metro windows-8 windows-runtime
有没有其他方法可以检查Windows应用商店应用中是否存在文件?
try
{
var file = await ApplicationData.Current.LocalFolder.GetFileAsync("Test.xml");
//no exception means file exists
}
catch (FileNotFoundException ex)
{
//find out through exception
}
Run Code Online (Sandbox Code Playgroud)
key*_*rdP 26
根据这篇文章中接受的答案,目前没有别的办法.但是,File IO团队正在考虑更改api,以便返回null而不是抛出异常.
从链接帖子引用:
目前检查文件是否存在的唯一方法是捕获FileNotFoundException.正如已经指出有一个明确的检查和开放是一个竞争条件,因此我不希望有任何文件存在API添加.我相信,文件IO队(我不是那支球队,所以我不知道肯定,但是这是我所听到的)也在考虑由该API返回空值而不是如果该文件不存在抛出.
Bil*_*ldr 13
这可能是旧的,但看起来他们已经改变了他们希望你接近这个的方式.
你应该尝试制作文件,如果文件已经存在则返回.这是关于它的文档.我正在更新这个,因为这是我在Google上搜索此问题的第一个结果.
因此,在我的情况下,我想打开一个文件,或者如果它不存在则创建它.我所做的是创建一个文件,如果它已经存在则打开它.像这样:
save = await dir.CreateFileAsync(myFile, CreationCollisionOption.OpenIfExists);
Run Code Online (Sandbox Code Playgroud)
我偶然发现了Shashank Yerramilli的这篇博文,提供了更好的答案.
我已经测试了这款适用于Windows Phone 8的功能.虽然没有在Windows商店测试过
我在这里复制答案
对于Windows RT应用程序:
public async Task<bool> isFilePresent(string fileName)
{
var item = await ApplicationData.Current.LocalFolder.TryGetItemAsync(fileName);
return item != null;
}
Run Code Online (Sandbox Code Playgroud)
对于Windows Phone 8
public bool IsFilePresent(string fileName)
{
return System.IO.File.Exists(string.Format(@"{0}\{1}", ApplicationData.Current.LocalFolder.Path, fileName);
}
Run Code Online (Sandbox Code Playgroud)
检查Windows Phone 8和WinRT中是否存在文件,无异常
归档时间: |
|
查看次数: |
33576 次 |
最近记录: |