Heim  >  Artikel  >  Java  >  So löschen Sie Dateien und Verzeichnisse in Java

So löschen Sie Dateien und Verzeichnisse in Java

王林
王林Original
2019-11-22 17:01:2713058Durchsuche

Die Methode

So löschen Sie Dateien und Verzeichnisse in Java

delete() kann zum Löschen von Dateien oder leeren Verzeichnissen/Ordnern verwendet werden. Die Methode delete() gibt true zurück, wenn die Datei gelöscht wurde, und false, wenn die Datei nicht vorhanden ist.

Wenn Sie ein Verzeichnis löschen, prüft die Methode delete(), ob das Verzeichnis leer ist, und löscht das Verzeichnis, wenn es leer ist. Andernfalls führt die Methode delete() nichts aus und gibt „false“ zurück. In diesem Fall gilt: Es müssen alle Dateien rekursiv gelöscht werden und anschließend das Verzeichnis.

Eine andere Möglichkeit, ein nicht leeres Verzeichnis zu löschen, ist die Verwendung der Methode Files.walkFileTree(), bei der alle Dateien einzeln verarbeitet werden und die Methode delete() für ein einzelnes Dateiobjekt aufgerufen wird.

Beispiel zum Löschen einer Datei:

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");
    }}

Hinweis: Im Gegensatz zu createNewFile() löst die Löschmethode keine IOException aus.

Das Folgende ist ein einfaches Programm, das zeigt, wie ein nicht leeres Verzeichnis gelöscht wird. Wenn das Verzeichnis Dateien enthält, ist das Löschen des Verzeichnisses nicht möglich.

Beispiel für das Löschen eines Verzeichnisses:

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());
    }}

Beispiel für das rekursive Löschen eines Verzeichnisses:

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;
           }
        });
    }}

Empfohlenes Tutorial: Java-Einführungs-Tutorial

Das obige ist der detaillierte Inhalt vonSo löschen Sie Dateien und Verzeichnisse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn