Не удалось удалить каталог через Java
В моем приложении я написал код для удаления каталога с диска, но когда я проверяю функцию удаления файла, он не удаляет файл. Я написал что-то вроде этого
//Code to delete the directory if it exists
File directory = new File("c:\\Report\\");
if(directory.exists())
directory.delete();
каталог не используется, но он не может удалить каталог
Ответы
Ответ 1
в Java, удаление каталога возможно только для пустого каталога, что приводит к следующим методам:
/**
* Force deletion of directory
* @param path
* @return
*/
static public boolean deleteDirectory(File path) {
if (path.exists()) {
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
deleteDirectory(files[i]);
} else {
files[i].delete();
}
}
}
return (path.delete());
}
Этот файл удалит вашу папку, даже если она не пуста, без проблем (только если этот каталог заблокирован ОС).
Ответ 2
Зачем изобретать колесо с методами для рекурсивного удаления? Взгляните на apache commons io.
https://commons.apache.org/proper/commons-io/javadocs/api-1.4/
FileUtils.deleteDirectory(dir);
ИЛИ
FileUtils.forceDelete(dir);
Это все, что вам нужно.
Существует также множество полезных методов для управления файлами...
Ответ 3
Каталог должен быть пустым, чтобы удалить его. Если он не пуст, вам нужно его рекурсивно удалить с помощью File.listFiles() и File.delete()
Ответ 4
Взгляд на документы:
Если это имя пути обозначает каталог, каталог должен быть пустым для удаления.
Вы уверены, что каталог пуст (также нет скрытых файлов)?
Ответ 5
Две другие возможности (кроме того, что каталог не пуст):
- Пользователь, который запускает java-программу, не имеет права на запись/удаление для каталога
- Каталог используется/заблокирован другим процессом (вы пишете, что это не так, но как вы это подтвердили?)
Ответ 6
Я получаю следующую ошибку при выполнении программы введите описание изображения здесь java.io.FileNotFoundException: D:\A
Вот мой код: -
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class MoveFile
{
public static void main(String[] args)
{
InputStream inStream = null;
OutputStream outStream = null;
try{
File afile =new File("D:\\A");
File bfile =new File("C:\\Users\\admin\\Desktop\\B");
inStream = new FileInputStream(afile);
outStream = new FileOutputStream(bfile);
byte[] buffer = new byte[1024];
int length;
//copy the file content in bytes
while ((length = inStream.read(buffer)) > 0){
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
//delete the original file
afile.delete();
System.out.println("File is copied successful!");
}catch(IOException e){
e.printStackTrace();
}
}
}
Как это исправить?? Помоги мне