3

処理後に削除したいファイルが含まれているフォルダがあります。ファイルの拡張子は次の.FIRとおりです。グーグルで調べた後、少し変更した再帰メソッドを見つけました。

void delete(File f) throws IOException {
      if (f.isDirectory()) {
        for (File c : f.listFiles())
            if(f.listFiles().toString().contains(".FIR"))
                delete(c);
      }
      if (!f.delete())
        throw new FileNotFoundException("Failed to delete file: " + f);
    }

この関数は、IOExceptionをスローして次のように通知します。

07-31 11:02:31.885: E/DELETE:(5694): Failed to delete file: /mnt/sdcard/ExtractedFiles

フォルダはRW操作に設定されています。そして私のマニフェストファイルで:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

私は次のような音の別の許可を見つけることができませんでしたMODIFY_FILES

何か案は?

4

5 に答える 5

9

これを試して:

void delete(File f) throws IOException {
    if (f.isDirectory()) {
        for (File c : f.listFiles()) {
            delete(c);
        }
    } else if (f.getAbsolutePath().endsWith("FIR")) {
        if (!f.delete()) {
            new FileNotFoundException("Failed to delete file: " + f);
        }
    }
}
于 2012-07-31T09:26:07.270 に答える
4

ファイルをよりよく使用tempする...

File f = File.createTempFile("pattern", ".suffix");

アプリケーションが閉じられると、一時ファイルは最初に閉じられ、次に削除されます。

詳細については、次のリンクを参照してください。

http://www.roseindia.net/java/example/java/io/create-temp-file.shtml

于 2012-07-31T09:14:52.090 に答える
2

問題はここにあると思います:

if(f.listFiles().toString().contains(".FIR"))

これを次のように変更します。

if(c.getName().contains(".FIR"))

また、ディレクトリに拡張子が.FIRのファイルのみが含まれていることを確認してください。含まれていない場合(他の拡張子ファイルが利用可能な場合)、空でないディレクトリの削除に失敗します。


それ以外の場合は、次の方法を使用して実行します。

private static boolean delete(File dir) {
    if (dir != null && dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = delete(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }
    return (dir.getName().contains(".FIR"))? dir.delete() : false;
}
于 2012-07-31T09:15:05.893 に答える
1

これをチェックして

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

于 2012-07-31T09:13:06.190 に答える
0

私はこのコードを使用していました;それは機能しています:

 String root_sd = Environment.getExternalStorageDirectory().toString();
 File file = new File(path) ;       
  File list[] = file.listFiles();
    for(File f:list)
      {
     name =  file.getName();
    filestv.setText(f.getName());
    //add new files name in the list
   //  delete.setText(name );


      }  


}

そして、あなたは完全なチュートリアルに従うことができます

于 2015-06-17T01:50:27.467 に答える