>  기사  >  Java  >  Java에서 파일 및 디렉토리를 삭제하는 방법

Java에서 파일 및 디렉토리를 삭제하는 방법

王林
王林원래의
2019-11-22 17:01:2713057검색

Java에서 파일 및 디렉토리를 삭제하는 방법

delete() 메서드를 사용하여 파일이나 빈 디렉터리/폴더를 삭제할 수 있습니다. 파일이 삭제되면 delete() 메서드는 true를 반환하고, 파일이 존재하지 않으면 반환합니다. 거짓. delete()方法可用于删除文件或空目录/文件夹,如果文件被删除,delete()方法返回true,如果文件不存在则返回false。

如果删除目录,delete()方法检查目录是否为空,如果目录为空,则删除目录,否则delete()方法不会执行任何操作并返回false,所以在这种情况下,必须递归删除所有文件,然后再删除目录。

删除非空目录的另一种方法是使用Files.walkFileTree()方法,在这种方法中,可以逐个处理所有文件,并在单个文件对象上调用delete()

디렉토리를 삭제하면 delete() 메소드는 디렉토리가 비어 있는지 확인합니다. 디렉토리가 비어 있으면 삭제() 메소드는 어떤 작업도 수행하지 않습니다. false를 반환하므로 이 경우 모든 파일을 재귀적으로 삭제한 다음 디렉터리를 삭제해야 합니다.

비어 있지 않은 디렉터리를 삭제하는 또 다른 방법은 Files.walkFileTree() 메서드를 사용하는 것입니다. 이 메서드에서는 모든 파일을 하나씩 처리할 수 있으며 단일 파일에 대해 delete가 호출됩니다. 객체()메서드.

파일 삭제 예:

package com.journaldev.files;import java.io.File;public class DeleteFileJava {
    /**
     * 此类显示如何在Java中删除文件
     * @param args
     */
    public static void main(String[] args) {
        // 带路径的文件名
        File file = new File("tmp/tmp2/file.txt");
        if(file.delete()){
            System.out.println("tmp/tmp2/file.txt File deleted");
        }else System.out.println("File tmp/tmp2/file.txt doesn't exist");
        // 只提供文件名称
        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");
        // 删除空的目录
        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");
        // 试图删除非空目录
        file = new File("D:/user/maxsu/project");
        if(file.delete()){
            System.out.println("D:/user/maxsu/project directory deleted from Project root directory");
        }else System.out.println("D:/user/maxsu/project directory doesn't exist or not empty");
    }}

참고: createNewFile()과 달리 삭제 메서드는 IOException을 발생시키지 않습니다.

다음은 비어 있지 않은 디렉터리를 삭제하는 방법을 보여주는 간단한 프로그램입니다. 디렉터리에 파일이 포함되어 있으면 디렉터리를 삭제하면 성공하지 못합니다.


디렉토리 삭제 예:

import java.io.File;public class JavaDeleteDirectory {
    public static void main(String[] args) {
        File dir = new File("D:/worksp/java/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();
        }
        //现在目录为空,所以可以删除它
        System.out.println("Deleting Directory. Success = "+dir.delete());
    }}

디렉토리를 재귀적으로 삭제하는 예:

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("D:/worksp/maxsu/log");
        Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
           @Override
           public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) throws IOException {
               Files.delete(file); // 有效,因为它始终是一个文件
               return FileVisitResult.CONTINUE;
           }
           @Override
           public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
               Files.delete(dir); //这将起作用,因为目录中的文件已被删除
               return FileVisitResult.CONTINUE;
           }
        });
    }}

추천 튜토리얼:

Java 입문 튜토리얼🎜🎜🎜

위 내용은 Java에서 파일 및 디렉토리를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.