【问题标题】:checking if file exists in a specific directory检查文件是否存在于特定目录中
【发布时间】:2012-06-28 13:24:26
【问题描述】:

我正在尝试检查给定目录中的特定文件。我不想要代码,但我想修复我拥有的代码。这个问题的唯一区别是我查找扩展名为 .MOD 的文件。

我已经准备好了代码:-

public static int checkExists(String directory, String file) {
    File dir = new File(directory);
    File[] dir_contents = dir.listFiles();
    String temp = file + ".MOD";
    boolean check = new File(temp).exists();
    System.out.println("Check"+check);  // -->always says false

    for(int i = 0; i<dir_contents.length;i++) {
        if(dir_contents[i].getName() == (file + ".MOD"))
            return Constants.FILE_EXISTS;
    }

    return Constants.FILE_DOES_NOT_EXIST;
}

但由于某些原因,它不起作用。我不明白为什么,有人可以在这里找到任何错误吗?

【问题讨论】:

  • 您是否已经打印出 tmp 值并检查该文件是否真的存在?如果是这样,linux文件中的哪个环境(windows或linux)区分大小写......
  • 是的,我尝试打印临时值,并且该文件确实存在于目录中。是windows操作系统,但是file参数和目录中文件的实际名称是区分大小写的。

标签: java directory file-exists


【解决方案1】:

您希望 temp.MOD 文件位于当前目录(运行应用程序的目录)中,还是希望它位于“目录”文件夹中?在后一种情况下,请尝试以这种方式创建文件:

boolean check = new File(directory, temp).exists();

还要检查文件权限,因为它也会因权限错误而失败。正如 Spaeth 所说,区分大小写也可能是问题的原因。

【讨论】:

    【解决方案2】:

    这就是你有错误的地方。

    String temp = file + ".MOD";
    

    if(dir_contents[i].getName() == (file + ".MOD"))
    

    代码boolean check = new File(temp).exists(); 将检查当前目录中的文件,而不是所需目录中的文件。

        String dirName="/home/demo";
        File dir = new File(dirName);
        File[] dir_contents = dir.listFiles();
        String temp = dirName+"/"+"README" + ".MOD";
        boolean check = new File(temp).exists();
        System.out.println("Check" + check); // -->always says false
    
        for (int i = 0; i < dir_contents.length; i++) {
            if (dir_contents[i].getName().equals("README" + ".MOD"))
                return Constants.FILE_EXISTS;
                }
    
        return Constants.FILE_DOES_NOT_EXIST; 
    

    【讨论】:

    • @gkris 你必须在 for 循环中使用 .equals()
    • for 循环只是检查同一文件是否存在的另一种方法。我有 2 种方法来检查相同的功能,因为没有一种方法有效。现在我可以安全地删除整个 for 循环。再次感谢。
    【解决方案3】:

    试试这个........

    File f = new File("./file_name");
    if(f.exists()){
        System.out.println("success");
    }
    else{
        System.out.println("fail");
    }
    

    【讨论】:

    • 这不会有帮助,因为我没有检查当前目录中的文件。无论如何,我得到了答案并接受了它。谢谢
    • 好吧,我在路径中的意思...好的 new File("./file_name"); “。” (dot) 运算符表示当前目录
    • 然后简单的给出需要的文件的路径
    猜你喜欢
    • 2022-11-21
    • 2015-07-07
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2019-02-17
    相关资源
    最近更新 更多