Рубрики
Без рубрики

Java Удалить файл, каталог

Java удалить файл, Java удалить каталог, Java Файл удалить() метод, Java NIO Файлы walkFileTree, Java удалить папку, удалить все файлы в каталоге java.

Автор оригинала: Pankaj Kumar.

Сегодня мы рассмотрим примеры Java delete file и java delete directory. Ранее мы узнали, как создать файл на java .

Java удалить файл

  1. Метод удаления файлов Java() может использоваться для удаления файлов или пустой директории/папки в java. Метод удаления файлов Java возвращает значение true, если файл удаляется, и возвращает значение false, если файл не существует.
  2. Если вы пытаетесь удалить каталог, он проверяет метод удаления файла java (), проверяет, пуст ли он или нет. Если каталог пуст, он удаляется, иначе метод delete() ничего не делает и возвращает false. Поэтому в этом случае мы должны рекурсивно удалить все файлы, а затем пустой каталог.
  3. Другим способом удаления непустого каталога является использование метода Files.walkFileTree () . В этом методе мы можем обработать все файлы один за другим и вызвать метод удаления для отдельных файлов.

Пример удаления файла Java

Давайте посмотрим пример программы удаления файлов java.

package com.journaldev.files;

import java.io.File;

public class DeleteFileJava {

    /**
     * This class shows how to delete a File in Java
     * @param args
     */
    public static void main(String[] args) {
        //absolute file name with path
        File file = new File("/Users/pankaj/file.txt");
        if(file.delete()){
            System.out.println("/Users/pankaj/file.txt File deleted");
        }else System.out.println("File /Users/pankaj/file.txt doesn't exist");
        
        //file name only
        file = new File("file.txt");
        if(file.delete()){
            System.out.println("file.txt File deleted from Project root directory");
        }else System.out.println("File file.txt doesn't exist in the project root directory");
        
        //relative path
        file = new File("temp/file.txt");
        if(file.delete()){
            System.out.println("temp/file.txt File deleted from Project root directory");
        }else System.out.println("File temp/file.txt doesn't exist in the project root directory");
        
        //delete empty directory
        file = new File("temp");
        if(file.delete()){
            System.out.println("temp directory deleted from Project root directory");
        }else System.out.println("temp directory doesn't exist or not empty in the project root directory");
        
        //try to delete directory with files
        file = new File("/Users/pankaj/project");
        if(file.delete()){
            System.out.println("/Users/pankaj/project directory deleted from Project root directory");
        }else System.out.println("/Users/pankaj/project directory doesn't exist or not empty");
    }

}

Ниже приведены выходные данные, когда мы впервые выполняем приведенный выше пример программы удаления файлов java.

/Users/pankaj/file.txt File deleted
file.txt File deleted from Project root directory
temp/file.txt File deleted from Project root directory
temp directory deleted from Project root directory
/Users/pankaj/project directory doesn't exist or not empty

Обратите внимание, что временный каталог имел file.txt и сначала он был удален, а затем каталог был пуст и успешно удален,/Users/pankaj/project не был пустым и, следовательно, не удалялся.

При последующем запуске той же программы вывод будет:

File /Users/pankaj/file.txt doesn't exist
File file.txt doesn't exist in the project root directory
File temp/file.txt doesn't exist in the project root directory
temp directory doesn't exist or not empty in the project root directory
/Users/pankaj/project directory doesn't exist or not empty

Обратите внимание , что в отличие от createNewFile (), метод delete не вызывает исключения IOException.

Java удалить каталог

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

package com.journaldev.files;

import java.io.File;

public class JavaDeleteDirectory {

	public static void main(String[] args) {
		File dir = new File("/Users/pankaj/log");
		
		if(dir.isDirectory() == false) {
			System.out.println("Not a directory. Do nothing");
			return;
		}
		File[] listFiles = dir.listFiles();
		for(File file : listFiles){
			System.out.println("Deleting "+file.getName());
			file.delete();
		}
		//now directory is empty, so we can delete it
		System.out.println("Deleting Directory. Success = "+dir.delete());
		
	}

}

Java рекурсивно удаляет каталог

Ранее нам приходилось писать код на основе рекурсии для удаления каталога с вложенными каталогами. Но с Java 7 мы можем сделать это с помощью класса Files . Ниже приведен код, который вы должны использовать для удаления каталога. Он также заботится об удалении вложенных каталогов.

package com.journaldev.files;

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;

public class JavaDeleteDirectoryRecursively {

	public static void main(String[] args) throws IOException {
		
		Path directory = Paths.get("/Users/pankaj/log");
		Files.walkFileTree(directory, new SimpleFileVisitor() {
		   @Override
		   public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) throws IOException {
		       Files.delete(file); // this will work because it's always a File
		       return FileVisitResult.CONTINUE;
		   }

		   @Override
		   public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
		       Files.delete(dir); //this will work because Files in the directory are already deleted
		       return FileVisitResult.CONTINUE;
		   }
		});
	}
}

Это все для примеров java delete file и java delete directory.

Ссылка: Java NIO Файлы класса API Doc