23

我正在尝试检查给定目录中的特定文件。我不想要代码,但我想修复我拥有的代码。这个问题的唯一区别是我查找扩展名为.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;
}

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

4

3 回答 3

52

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

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

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

于 2012-06-27T06:47:45.853 回答
5

这就是你有错误的地方。

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; 
于 2012-06-27T06:50:36.323 回答
4

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

File f = new File("./file_name");
if(f.exists()){
    System.out.println("success");
}
else{
    System.out.println("fail");
}
于 2012-06-27T07:11:02.347 回答