2010-07-20 4 views
9

Android 플랫폼 용으로 개발 중입니다.FileOutputStream을 사용하여 만든 파일 삭제

FileOutputStream fos = openFileOutput("MY_TEMP.TXT", Mode); 

내가 쓸 정상적으로 읽을 수 있기 때문에 잘 작동 :
내 애플에 대한 간단한 호출 임시 파일을 만듭니다.

문제는 앱을 종료 할 때이 파일을 삭제하고 싶다는 것입니다. 내가 사용 :

File f = new File(System.getProperty("user.dir"), "MY_TEMP.TXT"); 
f.delete() 

그러나 그것은 항상 false를 반환하고 파일이 삭제되지 않습니다.

File f = new File("MY_TEMP.TXT"); 
f.delete(); 

을 그리고 그 중 하나가 작동하지 않습니다
는 내가 노력했다.

답변

10

이 게시글을 확인하고 FileOutputStream에서 생성 된 파일을 삭제하는 가장 좋은 방법은 Context 메서드 deleteFile (TEMP_FILE)에서 간단하게 호출하는 것입니다.

+0

맞습니다! 매우 간단합니다! 방금 ​​deleteFile (TEMP_FILE)을 호출합니다. 프로필에 지정된 폴더로 직접 이동하며 문서에 따라 이식 가능합니다. 그것은 내 필요를 위해 작동합니다. 와우 나는 완전히 잘못된 길을 가고 있었다! 어쨌든, 올바른 방향으로 나를 가리켜 주신 모든 분들께 감사드립니다. –

+0

예, FileOutputStream으로 만든 파일을 삭제하는 가장 빠른 방법입니다. – anticafe

7

열린 파일을 삭제할 수 없습니다. 삭제하기 전에 스트림을 닫아야합니다.

fos.close(); 
f.delete(); 

내가 오히려 기본 플랫폼을 수 있도록 File#createTempFile()를 사용하는 자동 정리 작업을 수행하고 File에서 상대 경로를 사용하여 발생하는 잠재적 인 휴대 성 문제를 피할 것, 말했다.

+1

는 "이 방법은 임시 파일 기능만을 제공이 방법에 의해 생성 된 파일을 자동으로 삭제하려면,'deleteOnExit()'방법을 사용 준비하기.. " – Powerlord

+0

R. Bemrose : 알맞은 OS가 주기적으로 임시 디렉토리를 정리합니다. – BalusC

+1

@BalusC : Windows는 괜찮은 OS가 아닙니다. ;) 그리고 나는 그것을 어떻게 처리할지 안드로이드에 대해 말할 수 없다. – Powerlord

0

파일 삭제를 시도하기 전에 스트림이 닫혀 있는지 확인하십시오.

0

당신은 이미 확실한 답을 얻었지만, VM이 종료 될 때 파일 삭제를 예약하는 File.deleteOnExit()을 언급하고자합니다.

당신은 여전히 ​​파일에 연결된 스트림을 닫아야합니다 --edit--

.

+0

파일을 닫지 않으면 작동하지 않습니다. – BalusC

+0

나는 그것을 말하지 않는다. 파일을 삭제하는 다른 방법 :) – willcodejavaforfood

1

삭제하기 전에 파일을 닫아야합니다. 아래 코드를 사용하십시오. createTempFile`의 문서 '에서

 FileOutputStream fos = openFileOutput("MY_TEMP.TXT",Mode); 
     File f = new File(System.getProperty("user.dir"),"MY_TEMP.TXT"); 
     fos.close(); 
     File f = new File("MY_TEMP.TXT"); 
     f.delete();