Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查文件是否可读_C#_File - Fatal编程技术网

C# 检查文件是否可读

C# 检查文件是否可读,c#,file,C#,File,我需要读取许多文件,但有时它们不可用或无法从当前用户处读取。这是我用来检查文件是否有效的代码,但我认为我没有正确使用using语句 private static bool fileAccessible(string filePath) { using (FileStream fs = new FileStream(filePath, FileMode.Open)) { if (fs.CanRead) { return true; }

我需要读取许多文件,但有时它们不可用或无法从当前用户处读取。这是我用来检查文件是否有效的代码,但我认为我没有正确使用using语句

private static bool fileAccessible(string filePath) {
    using (FileStream fs = new FileStream(filePath, FileMode.Open)) {
        if (fs.CanRead) {
            return true;
        }
        else {
            return false;
        }
    }

    return false; // compiler says "unreachable code"
}
我应该在using语句之外插入try/catch块来捕获不可用文件引发的错误,还是在filePath不可用的情况下继续使用而不引发错误


附加问题:这是检查文件是否可用和可访问的正确方法吗?如果回答是“是”,我是否可以更改文件模式。打开文件模式。追加以对可写文件执行相同的检查?

是,最好使用try-catch,因为由于某些连接问题可能会发生IO异常,或者可能会发生文件未找到异常

   private static bool fileAccessible(string filePath) {
            return  File.Exists(filePath);

    }

返回false;//编译器说不需要不可访问的代码。重复的问题只解决权限问题,但我还需要检查文件exists@Naigel在使用语句之前,可以调用File.Existsfilepath检查文件是否存在文件系统并非完全由程序控制。因此,此函数可能会返回true,但当您实际基于此执行操作时,该文件可能不再可用。因此,我认为这主要是浪费时间——只要继续,尝试以任何方式使用该文件,并在失败发生时作出反应。是的,在一定程度上。对于应用程序(文件系统、网络、远程服务器)无法控制的任何资源,您都必须编写代码,以应对随时发生的故障。任何前期测试都无法回答我能否完成任务X的问题?您是选择使用本地异常处理程序立即围绕每次访问执行此操作,还是选择更全局的视图,取决于您。如果filePath不是有效路径,会发生什么?更正了代码。请核实,