33

このコードを使用して、すべてのファイルを削除します。

File root = new File("root path");
File[] Files = root.listFiles();
if(Files != null) {
    int j;
    for(j = 0; j < Files.length; j++) {
        System.out.println(Files[j].getAbsolutePath());
        System.out.println(Files[j].delete());
    }
}

false がFiles[j]フォルダである場所を削除します。

フォルダーとそのすべてのサブファイルを削除したい。
どうすればこれを変更できますか?

4

13 に答える 13

43

最も簡単な方法は、Apache Commons IO ライブラリのFileUtils.deleteDirectoryを使用することです。

File dir = new File("root path");
FileUtils.deleteDirectory(dir);

これにより、含まれているディレクトリも削除されることに注意してください。

この行をgradleファイルに追加して、Apacheを作成します

compile 'org.apache.commons:commons-io:1.3.2'  
于 2013-02-18T06:54:42.303 に答える
18
File file = new File("C:\\A\\B");        
    String[] myFiles;      

     myFiles = file.list();  
     for (int i=0; i<myFiles.length; i++) {  
         File myFile = new File(file, myFiles[i]);   
         myFile.delete();  
     }  
B.delete();// deleting directory.

次のようにメソッドを記述できます。dir の下のすべてのファイルとサブディレクトリを削除します。すべての削除が成功した場合は true を返します。削除に失敗した場合、メソッドは削除の試行を停止し、false を返します。

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

    // The directory is now empty so delete it
    return dir.delete();
}
于 2013-02-18T07:03:02.523 に答える
7

storageDirがディレクトリの場合

for(File tempFile : storageDir.listFiles()) {
    tempFile.delete();
}
于 2016-04-25T12:56:00.170 に答える
5

あなたの場合、これは完全に機能し ます http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#cleanDirectory(java.io.File)

File dir = new File("dir_path");
if(dir.exists() && dir.isDirectory()) {
    FileUtils.cleanDirectory(dir);
}

フォルダ自体を削除したい場合。(空である必要はありません)。ファイルにも使えます。

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#forceDelete(java.io.File)

File dir = new File("dir_path");
if(dir.exists()) {
    FileUtils.forceDelete(dir);
}
于 2015-03-27T21:25:56.807 に答える
4

このコードを試して、ファイルとサブファイルを削除できます

public void deleteFile(File f){
String[] flist=f.list();
for(int i=0;i<flist.length;i++){
    System.out.println(" "+f.getAbsolutePath());
    File temp=new File(f.getAbsolutePath()+"/"+flist[i]);
    if(temp.isDirectory()){
       deleteFile(temp) ;
       temp.delete();
    }else{
    temp.delete();
    }
于 2013-02-18T07:00:09.373 に答える
4

次のように確認できます。

for(j = 0; j < Files.length; j++) {

    if(file.isDirectory()){
        for(File f : file.listFiles()){
        System.out.println(Files[j].getAbsolutePath());
        System.out.println(Files[j].delete());
    }
    else {
        System.out.println(Files[j].getAbsolutePath());
        System.out.println(Files[j].delete());
    }
}
于 2013-02-18T06:56:09.863 に答える
1

kotlin拡張関数として、これを行うことができます

fun File.deleteDirectoryFiles(){
    this.listFiles().forEach {
        if(it.isDirectory){
            it.deleteDirectoryFiles()
        }else{
            it.delete()
        }
    }

    this.delete()
}

それからあなたはただすることができます

file.deleteDirectoryFiles()
于 2020-12-08T17:08:13.177 に答える
0

このコードは私にとってはうまくいきます。「imagesFolder」にはいくつかのファイルとフォルダーがあり、それらにはファイルがあります。

  if (imagesFolder.isDirectory())
  {
       String[] children = imagesFolder.list(); //Children=files+folders
       for (int i = 0; i < children.length; i++)
       {
         File file=new File(imagesFolder, children[i]);
         if(file.isDirectory())
         {
          String[] grandChildren = file.list(); //grandChildren=files in a folder
          for (int j = 0; j < grandChildren.length; j++)
          new File(file, grandChildren[j]).delete();
          file.delete();                        //Delete the folder as well
         }
         else
         file.delete();
      }
  }
于 2015-09-30T16:15:22.517 に答える