内部ストレージに保存されている画像を削除しようとしています。私はこれまでにこれを考え出しました:
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
を確認できます。
getFilesDir()
はどういうわけか機能しませんでした。パスとファイル名全体を返すメソッドを使用すると、目的の結果が得られました。コードは次のとおりです。
File file = new File(inputHandle.getImgPath(id));
boolean deleted = file.delete();
Context.deleteFile() を試しましたか?
これは私のために働く:
File file = new File(photoPath);
file.delete();
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
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」を文字列として宣言し、その情報にアクセスできるコンストラクタによって文字列形式のディレクトリの絶対パスが返されるように要求する必要があります。
次を使用することもできます:file.getCanonicalFile().delete();
getFilesDir().getAbsolutePath()
を試しましたか?
Fileオブジェクトをフルパスで初期化することで問題を解決したようです。これでもうまくいくと思います。