Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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
Java 类文件的exists()方法是如何工作的?_Java_File Io_Scjp - Fatal编程技术网

Java 类文件的exists()方法是如何工作的?

Java 类文件的exists()方法是如何工作的?,java,file-io,scjp,Java,File Io,Scjp,早上好,我使用以下方法检查某个文件是否存在于一组目录中: public static boolean doesFileExist(String[] directories, String fileName) { String path = " "; for (String dir : directories) { path = path + File.separator + dir; } System.out.println(path);

早上好,我使用以下方法检查某个文件是否存在于一组目录中:

public static boolean doesFileExist(String[] directories, String fileName) {
    String path = " ";
    for (String dir : directories) {
        path = path + File.separator + dir;

    }
    System.out.println(path);
    File file = new File(path, fileName);
    return file.exists();
}
    static String[] direstories = { "B:\\eslam\\xml", "B:\\eslam\\xml\\paper" };
我给这个方法一个目录数组和一个文件名,它实际上存在于其中一个目录中,下面是目录数组:

public static boolean doesFileExist(String[] directories, String fileName) {
    String path = " ";
    for (String dir : directories) {
        path = path + File.separator + dir;

    }
    System.out.println(path);
    File file = new File(path, fileName);
    return file.exists();
}
    static String[] direstories = { "B:\\eslam\\xml", "B:\\eslam\\xml\\paper" };
而文件
ch23.pdf
确实存在于第一个目录中,我认为该方法获取一组目录的整个字符串,并根据类似于
/^[a-z]+$/:
的正则表达式将其拆分,但它违反了我的预期,因为该方法对这些目录组
\B:\eslam\xml\B:\eslam\xml\paper>返回false

循环的范围是否错误


我认为,您将只检查目录数组中的最后一个元素。

该方法仅适用于单个路径,实际上,文件实例应仅指向单个文件路径

试试这个:

public static boolean doesFileExist(String[] directories, String fileName) {
for (String dir : directories) {
    System.out.println(dir+ File.separator+fileName);
    File file = new File(dir, fileName);
    if(!file.exists()) return false;
}
return true;}

这根本不是API的工作原理。我建议你读一下JavaDoc。也许这应该是一个评论!可能是-但它也回答了为什么代码没有达到OP预期的效果。该文件存在于第一个目录中,他永远不会真正检查该目录。上面的方法不是检查两个目录的连接吗??它甚至没有像您所说的那样检查最后一个目录,这就是我要问的。file.exists方法没有按照您希望的方式工作。它将在上面代码中的System.out.println所显示的路径中查找一个名为ch23.pdf的文件(这几乎肯定不存在于您的文件系统中)。我不想要一个有效的方法,我只想用我编写的代码测试该方法,而不改变序列,所以我认为唯一可行的方法是:静态字符串[]目录={“B:”,“eslam”,“xml”};