gpt4 book ai didi

c# - 检查文件是否可以读取

转载 作者:可可西里 更新时间:2023-11-01 09:10:11 28 4
gpt4 key购买 nike

这就是我在实际读取文件之前尝试检查是否可以读取文件的方式

FileStream stream = new FileStream();
try
{
// try to open the file to check if we can access it for read
stream = File.Open(this.DataSourceFileName, FileMode.Open, FileAccess.Read);
}
catch (IOException ex)
{
return false;
}
finally
{
stream.Dispose();
}

这是正确的方法吗?

File.Open 也类似于 File.ReadAllText,我的意思是,它们在性能方面是否同样昂贵?

最佳答案

一个文件能否读取取决于很多因素:你有没有权限,硬盘有没有坏。我可能会和你走同样的路。

但是,您必须记住,您通过这种方法获得的信息只是一个快照。如果在您调用此方法后立即有人更改了文件的权限,则稍后在您的代码中访问该文件仍然会失败。您不应依赖此方法的结果。

只是一个建议,下面的代码做同样的事情,但更简洁一点:

try
{
File.Open(this.DataSourceFileName, FileMode.Open, FileAccess.Read).Dispose();
return true;
}
catch (IOException)
{
return false;
}

因为您并没有真正使用流,所以您不必保留对它的引用。相反,您可以通过对 File.Open() 的结果调用 dispose 来立即处理流。

编辑:

参见 https://gist.github.com/pvginkel/56658191c6bf7dac23b3893fa59a35e8有关为什么我将 Dispose() 放在 File.Open() 末尾而不是使用 using 语句的解释.

关于c# - 检查文件是否可以读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17318585/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com