web-dev-qa-db-ja.com

内部ストレージからファイルを削除する

内部ストレージに保存されている画像を削除しようとしています。私はこれまでにこれを考え出しました:

File dir = getFilesDir();
File file = new File(dir, id+".jpg");
boolean deleted = file.delete();

そして、これは別の質問からでした 回答済み

File dir = getFilesDir();
File file = new File(dir, "my_filename");
boolean deleted = file.delete();

私の例は常にfalseを返します。 EclipseのDDMSでファイルfx 2930.jpgを確認できます。

88
Crunch

getFilesDir()はどういうわけか機能しませんでした。パスとファイル名全体を返すメソッドを使用すると、目的の結果が得られました。コードは次のとおりです。

File file = new File(inputHandle.getImgPath(id));
boolean deleted = file.delete();
124
Crunch

Context.deleteFile() を試しましたか?

44

これは私のために働く:

File file = new File(photoPath);
file.delete();

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
16
Jiyeh
String dir = getFilesDir().getAbsolutePath();
File f0 = new File(dir, "myFile");
boolean d0 = f0.delete(); 
Log.w("Delete Check", "File deleted: " + dir + "/myFile " + d0);

これはFileオブジェクトに対するリクエストであるため、コードFile dir = getFilesDir();は機能しません。ディレクトリへのパスを宣言する文字列を取得しようとしているため、「dir」を文字列として宣言し、その情報にアクセスできるコンストラクタによって文字列形式のディレクトリの絶対パスが返されるように要求する必要があります。

14
VikingGlen

次を使用することもできます:file.getCanonicalFile().delete();

10
mvsjes2

getFilesDir().getAbsolutePath()を試しましたか?

Fileオブジェクトをフルパスで初期化することで問題を解決したようです。これでもうまくいくと思います。

2
Ronnie