8

ここに画像の説明を入力

外部ストレージにファイルを生成および作成するアプリケーションを実装しています。どうすればそれを削除できますか?

編集

次のコードを追加しましたが、それでも同じ問題が発生します。以下の私のコードを参照してください:

String fullPath = "/mnt/sdcard/";
System.out.println(fullPath);
try{
    File file = new File(fullPath, "audio.mp3");
    if(file.exists()){
        boolean result = file.delete();
        System.out.println("Application able to delete the file and result is: " + result);
        // file.delete();
    }else{
        System.out.println("Application doesn't able to delete the file");
    }
}catch (Exception e){
    Log.e("App", "Exception while deleting file " + e.getMessage());
}

LogCat で、アプリケーションがファイルを削除できるようになり、結果は is:false になります。これを実行した後のスクリーンショットを添付しました。

4

8 に答える 8

14
File file = new File(selectedFilePath);
boolean deleted = file.delete();

selectedFilePath は、削除するファイルのパスです。たとえば、次のようになります。

/sdcard/YourCustomDirectory/ExampleFile.mp3
于 2013-02-06T11:11:21.173 に答える
4

AndroidManifest.xml ファイルに書き込み権限を設定するのを忘れたと思います。そのため、delete() は常に false を返します。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2014-03-26T10:12:50.563 に答える
4

これは、ディレクトリ名を渡してその内容を削除する別の方法です

"/sdcard/abc/yourdata"

public void deleteFiles(String path) {      
    File file = new File(path);

    if (file.exists()) {
        String deleteCmd = "rm -r " + path;
        Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec(deleteCmd);
        } catch (IOException e) {

        }
    }

}
于 2013-02-06T11:13:18.723 に答える
3

自動的に作成されたファイルを削除し、ファイルがどこに保存されているかわからない場合は、次のコードを試してください。

public void clearApplicationData() {
    File cache = getCacheDir();
    File appDir = new File(cache.getParent());
    if (appDir.exists()) {
        String[] children = appDir.list();
        for (String s : children) {
            if (!s.equals("lib")) {
                deleteDir(new File(appDir, s));
                Log.i("TAG",
                        "**************** File /data/data/APP_PACKAGE/" + s
                                + " DELETED *******************");
            }
        }
    }
}

public static boolean deleteDir(File dir) {
    if (dir != null && 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();
}
于 2013-02-06T11:16:11.157 に答える
2

これを試すと、外部ストレージからファイルが削除されます。

public void deleteFromExternalStorage(String fileName) {
    String fullPath = "/mnt/sdcard/";
    try
    {
        File file = new File(fullPath, fileName);
        if(file.exists())
            file.delete();
    }
    catch (Exception e)
    {
        Log.e("App", "Exception while deleting file " + e.getMessage());
    }
}
于 2013-02-06T11:24:27.407 に答える
2

その非常に簡単です:

File file = new File(YOUR_IMAGE_PATH).delete();
if(file.exists())
    file.delete();

それがあなたを助けることを願っています。

于 2013-02-06T11:06:44.580 に答える
1
File file = new File(selectedFilePath);
boolean deleted = file.delete();

パスは次のようになります。/mnt/Pictures/SampleImage.png

于 2013-02-06T11:05:38.907 に答える
1
public void deleteOnExit ()

VM が正常に終了したときに、このファイルが自動的に削除されるようにスケジュールします。

Android では、アプリケーションのライフサイクルに VM の終了が含まれないため、このメソッドを呼び出してもファイルが削除されないことに注意してください。代わりに、次のうち最も適切なものを使用する必要があります。

手動で delete() を呼び出すには、finally 句を使用します。削除する独自のファイル セットを保持し、アプリケーションのライフサイクルの適切な時点で処理します。すべてのリーダーとライターが開いたらすぐにファイルを削除するという Unix のトリックを使用します。新しいリーダー/ライターはファイルにアクセスできませんが、既存のすべてのリーダー/ライターは、最後のリーダー/ライターがファイルを閉じるまで引き続きアクセスできます。

于 2013-02-06T11:06:16.660 に答える