ホームページ  >  記事  >  Java  >  Javaでファイルとディレクトリを削除する方法

Javaでファイルとディレクトリを削除する方法

王林
王林オリジナル
2019-11-22 17:01:2713034ブラウズ

Javaでファイルとディレクトリを削除する方法

delete() メソッドは、ファイルまたは空のディレクトリ/フォルダーを削除するために使用できます。ファイルが削除された場合、delete() メソッドはファイルが削除された場合に true を返します。存在しません。false を返します。

ディレクトリが削除された場合、delete() メソッドはディレクトリが空かどうかを確認します。ディレクトリが空の場合はディレクトリを削除します。そうでない場合、delete() メソッドは何も実行しません。この場合、すべてのファイルを再帰的に削除し、次にディレクトリを削除する必要があります。

空ではないディレクトリを削除するもう 1 つの方法は、Files.walkFileTree() メソッドを使用することです。このメソッドでは、すべてのファイルを 1 つずつ処理し、単一のファイル オブジェクトに対して # を呼び出すことができます。 ##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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。