Вопрос по java, directory, file-exists – проверка, существует ли файл в определенном каталоге

16

Я пытаюсь проверить наличие определенного файла в данном каталоге. Мне не нужен код, но я хочу исправить тот, который у меня есть. Единственная разница в этом вопросе, это то, что я ищу файлы с расширением.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 и проверили, существует ли файл? И если да, то какой env это (windows или linux) в файлах linux чувствителен к регистру ... Francisco Spaeth
да, я попытался напечатать временное значение, и файл действительно существует в каталоге. Это ОС Windows, ноfile Параметр и фактическое имя файла в каталоге чувствительны к регистру. gkris

Ваш Ответ

4   ответа
3

File f = new File("./file_name");
if(f.exists()){
    System.out.println("success");
}
else{
    System.out.println("fail");
}
это не поможет, потому что я не проверяю файл в текущем каталоге. В любом случае я получил ответ и тоже принял его. Спасибо gkris
Хорошо, что я имею в виду в пути ... ок, новый файл (& quot; ./ file_name & quot;); & Quot;. & Quot; (точка) оператор означает текущий каталог
да, это то, что я делал неправильно. gkris
да. Я не хочу проверять текущий каталог. gkris
Затем просто укажите путь к нужному файлу
40

что файл temp.MOD находится в текущем каталоге (каталог, из которого вы запускаете приложение), или вы хотите, чтобы он находился в & quot; каталоге & quot; папка? В последнем случае попробуйте создать файл следующим образом:

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

Также проверьте наличие прав доступа к файлу, поскольку он также не будет работать при ошибках разрешения. Дело Чувствительно также может быть причиной проблемы, как упомянула Спет.

Рад, что это помогло.
да последний случай, и это работает! :) Спасибо gkris
4

Здесь у вас есть ошибка.

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; 
цикл for - это просто еще один метод проверки существования того же файла. У меня было 2 способа проверить одну и ту же функцию, потому что ни один из них не работал. Теперь я могу безопасно удалить весь цикл. Еще раз спасибо. gkris
@gkris, и вы должны использовать .equals () в цикле for
да. Благодарю. houman001 только что указал на то же самое. gkris
-2

https://automationprofessional.wordpress.com/2016/05/29/java-code-to-check-if-file-exists-or-not/

ИЛИ ЖЕ

Попробуйте этот код JAVA:

import java.io.File;

public class VerifyFileExists {
     public static void main(String[] args) {
     System.out.println("File present : "+checkIfFileExists("/Users/jradmin/Documents/Text.txt"));
}

public static boolean checkIfFileExists(String fileName) {
     boolean found = false;
     try {
         File file = new File(fileName);
         if (file.exists() && file.isFile()) 
            {
               found = true;
            }
         }
         catch (Exception e) 
            {
               e.printStackTrace();
            }
     return found;
  }
}
Правильный ответ был дан и принят. Пожалуйста, объясните, как ваш ответ добавляет что-то новое.
Он не только проверяет, существует ли файл, но даже проверяет, является ли он самим файлом или нет. И также я добавил целый класс, который может быть полезен для использования другими.

Похожие вопросы