Вопрос:

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

java

77624 просмотра

8 ответа

264 Репутация автора

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

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

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

Автор: Michal Chmi Источник Размещён: 22.12.2014 09:35

Ответы (8)


80 плюса

11780 Репутация автора

Решение

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

File file = ...;
boolean result = Files.deleteIfExists(file.toPath()); //surround it in try catch block
Автор: sol4me Размещён: 22.12.2014 09:39

7 плюса

5193 Репутация автора

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

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

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

Автор: Eugen Размещён: 22.12.2014 09:40

25 плюса

50191 Репутация автора

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

file.delete()

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

Автор: Martijn Courteaux Размещён: 22.12.2014 09:41

-1 плюса

4 Репутация автора

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

File f = new File("file.txt");
if(f.exists() && !f.isDirectory()) { 
    f.delete();
}
Автор: java_joe Размещён: 08.08.2017 06:19

1 плюс

175 Репутация автора

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

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;
}
Автор: everblack Размещён: 11.10.2017 03:22

-1 плюса

7 Репутация автора

  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();     
    }
Автор: yogesh rajguru Размещён: 22.08.2018 10:52

0 плюса

47 Репутация автора

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

FileUtils.forceDelete(FilePath);

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

Автор: RANA DINESH Размещён: 04.09.2018 04:21

0 плюса

36 Репутация автора

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

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

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

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

FileUtils.deleteQuietly(new File("test.txt"));
Автор: S Williams Размещён: 13.06.2019 09:09
Вопросы из категории :
32x32