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

Не удалось удалить каталог через Java

В моем приложении я написал код для удаления каталога с диска, но когда я проверяю функцию удаления файла, он не удаляет файл. Я написал что-то вроде этого

//Code to delete the directory if it exists
File directory = new File("c:\\Report\\");
if(directory.exists())
directory.delete(); 

каталог не используется, но он не может удалить каталог

4b9b3361

Ответ 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();
        }
    }
}

Как это исправить?? Помоги мне