2011-03-30 4 views
66

내부 저장소에 저장된 이미지를 삭제하려고합니다. 지금까지이 함께 왔어요 :내부 저장소에서 파일 삭제

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

그리고 이것은 answered with했다 또 다른 질문에서입니다 :

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

내 예는 항상 false를 반환합니다. 이클립스에서 DDMS 파일 fx 2930.jpg을 볼 수 있습니다.

답변

92

getFilesDir() 어떻게 든 작동하지 않았습니다. 전체 경로와 파일 이름을 반환하는 메서드를 사용하면 원하는 결과를 얻을 수 있습니다. 다음은 코드입니다.

File file = new File(ih.getImgPath(id)); 
boolean deleted = file.delete(); 
+16

당신이 당신의 대답 –

+0

에' "입력 핸들"에 대한 아마 짧은 ih' 무엇인지 말씀 해주십시오 수 있습니다. 그 생성자는 열거 나 생성 할 파일의 파일 이름을 포함한 전체 경로를 취합니다. – videogameboy76

41

Context.deleteFile()을 사용해 보셨습니까?

+0

작동하지 않는 Contex.deletFile()을 사용하여 변형을 시도했습니다. 아래는 일하는 것처럼 보입니다. – Crunch

+0

@ user661543 ih.getImgPath()에서 반환하는 전체 경로는 무엇입니까? 파일을 삭제하기 위해 인수로 전달한 것은 무엇입니까? 위의 방법이 작동하지 않으면 응용 프로그램 패키지에서 파일을 저장했을 가능성이 큽니다. 또는 잘못된 파일 이름을 인수로 전달했을 수 있습니다. –

+0

/data/data/xxxxxxx/2930.jpg – Crunch

8

당신은 또한 사용할 수 있습니다 file.getCanonicalFile().delete();

+0

감사합니다. :) –

2

당신이 getFilesDir().getAbsolutePath()를 시도?

File 객체를 전체 경로로 초기화하여 문제가 해결 된 것 같습니다. 나는 이것이 또한 트릭을 할 것이라고 믿습니다.

14
String dir = getFilesDir().getAbsolutePath(); 
File f0 = new File(dir, "myFile"); 
boolean d0 = f0.delete(); 
Log.w("Delete Check", "File deleted: " + dir + "/myFile " + d0); 

코드 File dir = getFilesDir();은 File 개체에 대한 요청이기 때문에 작동하지 않습니다. 디렉토리에 대한 경로를 선언하는 String을 검색하려고하므로 'dir'을 String으로 선언 한 다음 String 형식의 디렉토리의 절대 경로를 액세스 할 수있는 생성자가 반환하도록 요청해야합니다 정보.

10

이 나를 위해 작동합니다

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

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(photoPath)))); 
+2

"new File (photoPath)"에 대한 2 회 연속 호출의 이유가 있습니까? – Astyan

+0

새 파일 호출이 필요하지 않습니다. –