Подтвердить что ты не робот

Java лучший способ удалить файл, если существует

Нам нужно вызвать file.exists() до file.delete(), прежде чем мы сможем удалить файл.

 File file = ...;
 if (file.exists()){
     file.delete();
 }  

В настоящее время во всем нашем проекте мы создаем статический метод в некотором классе util для переноса этого кода. Есть ли другой способ добиться того же, так что нам не нужно копировать наш файл utils в любой другой проект.

4b9b3361

Ответ 1

Начиная с Java 7 вы можете использовать deleteIfExists, который возвращает логическое значение (или генерирует исключение) в зависимости от того, был ли файл удален или не. Этот метод может быть не атомарным по отношению к другим операциям файловой системы. Более того, если файл используется JVM/другой программой, то в некоторой операционной системе он не сможет его удалить. Каждый файл может быть преобразован в путь с помощью метода toPath. Например.

File file = ...;
boolean result = Files.deleteIfExists(file.toPath()); //surround it in try catch block

Ответ 2

На моей машине я могу просто сделать:

file.delete()

если файл не существует, он вернет false.

Ответ 3

Также существует решение Java 7, использующее новую абстракцию (ish) Path:

Path fileToDeletePath = Paths.get("fileToDelete_jdk7.txt");
Files.delete(fileToDeletePath);

Надеюсь, это поможет.

Ответ 4

Я работал над этим типом функции, возможно, это будет интересовать некоторых из вас...

public boolean deleteFile(File file) throws IOException {
    if (file != null) {
        if (file.isDirectory()) {
            File[] files = file.listFiles();

            for (File f: files) {
                deleteFile(f);
            }
        }
        return Files.deleteIfExists(file.toPath());
    }
    return false;
}

Ответ 5

Используйте приведенную ниже инструкцию для удаления любых файлов:

FileUtils.forceDelete(FilePath);

Примечание. Используйте коды exception handling если хотите.

Ответ 6

Apache Commons IO FileUtils предлагает FileUtils.deleteQuietly:

Удаляет файл, никогда не создавая исключение. Если файл является каталогом, удалите его и все подкаталоги. Разница между File.delete() и этим методом:

  • Каталог, который нужно удалить, не должен быть пустым.
  • Нет исключений, когда файл или каталог не может быть удален.

Это предлагает вызов удаления одной строки, который не будет жаловаться, если файл не удаляется:

FileUtils.deleteQuietly(new File("test.txt"));

Ответ 7

Это должно сработать для вас.

    File xx = new File("filename.txt");
    if (xx.exists()) {
       xx.delete();     
    }

Ответ 8

Это мое решение:

File f = new File("file.txt");
if(f.exists() && !f.isDirectory()) { 
    f.delete();
}

Ответ 9

  File xx = new File("filename.txt");
    if (xx.exists()) {
       System.gc();//Added this part
       Thread.sleep(2000);////This part gives the Bufferedreaders and the InputStreams time to close Completely
       xx.delete();     
    }

Ответ 10

хей,

Это мое решение:

File f = new File("file.txt");
if(f.exists() && !f.isDirectory()) { 
    f.delete();
}

если я хочу это решение, то оно будет удалять старые файлы резервных копий за последние 30 дней.