Java лучший способ удалить файл, если существует
Нам нужно вызвать file.exists()
до file.delete()
, прежде чем мы сможем удалить файл.
File file = ...;
if (file.exists()){
file.delete();
}
В настоящее время во всем нашем проекте мы создаем статический метод в некотором классе util для переноса этого кода. Есть ли другой способ добиться того же, так что нам не нужно копировать наш файл utils в любой другой проект.
Ответы
Ответ 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 дней.