10

Javaでディレクトリを作成しようとしています。存在する場合は、そのディレクトリとその内容を削除して、新しいディレクトリを作成したいと考えています。以下を実行しようとしていますが、ディレクトリが削除されません。新しいファイルがディレクトリに追加されます。

File file = new File("path");
boolean isDirectoryCreated = file.mkdir();
   if (isDirectoryCreated) {
       System.out.println("successfully made");
        } else {
          file.delete();
          file.mkdir();
          System.out.println("deleted and made");
          }

実行中のプロジェクトのディレクトリに実行時にこのディレクトリを作成しています。毎回の実行後、古いコンテンツを削除し、新しいコンテンツをこのディレクトリに存在させる必要があります。

4

3 に答える 3

15

Apache のおかげで、これは非常に簡単です。

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class DeleteFolder {

    public static void main(String[] args){
        try {
            File f = new File("/var/www/html/testFolder1");
            FileUtils.cleanDirectory(f); //clean out directory (this is optional -- but good know)
            FileUtils.forceDelete(f); //delete directory
            FileUtils.forceMkdir(f); //create directory
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }

}
于 2013-11-23T01:56:49.133 に答える
11
public static boolean deleteDir(File dir) {
    if (dir.isDirectory()) {
        String[] children = dir.list();
        for (int i=0; i<children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }
    return dir.delete();
}
于 2012-10-11T08:33:16.320 に答える
5

最初にディレクトリの内容を削除する必要があり、それからディレクトリを削除できるのはあなただけです..次のようなことを試すことができます: -

File file = new File("path");
boolean isDirectoryCreated = file.mkdir();

if (isDirectoryCreated) {
       System.out.println("successfully made");

} else {
       deleteDir(file);  // Invoke recursive method
       file.mkdir();       
}


public void deleteDir(File dir) {
    File[] files = dir.listFiles();

    for (File myFile: files) {
        if (myFile.isDirectory()) {  
            deleteDir(myFile);
        } 
        myFile.delete();

    }
}
于 2012-10-11T08:35:27.393 に答える