【发布时间】:2018-05-09 06:10:36
【问题描述】:
我有以下代码:
private async Task <string>IsolatedStorageReadTextFile(string uFileName)
{
string sRet = "";
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(uFileName);
if (file != null)
{
using (var inputStream = await file.OpenReadAsync())
using (var classicStream = inputStream.AsStreamForRead())
using (var streamReader = new StreamReader(classicStream))
{
while (streamReader.Peek() >= 0)
{
sRet = streamReader.ReadLine();
}
}
}
return sRet;
}
当相关文件不存在时,IDE 会抛出错误:
我应该
1) 让 IDE 调试警告器忽略这个错误(比如“不要中断这个异常”),我应该让“if (file != null)”完成这项工作
2) 或者我应该检查文件是否真的存在
3) 使用 try-catch?
我不得不根据答案添加代码的重要部分:
private async Task <bool> LocalExists(string uFileName)
{
bool b = false;
//https://stackoverflow.com/questions/8626018/how-to-check-if-file-exists-in-a-windows-store-app
try
{
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(uFileName);
b = (file != null);
}
catch (Exception ex)
{
b = false;
}
return b;
}
这会引发相同的异常,因为在 UWP 中,除了尝试访问文件之外,似乎没有其他方法可以检查文件是否实际存在:
How to check if file exists in a Windows Store App?
所以问题仍然存在。
【问题讨论】:
-
永远不要使用异常来驱动代码流。调用之前的 File.Exists 将避免很多麻烦。 (不是 100% 安全,但仍然......)
标签: c# exception uwp visual-studio-2017 storagefile