티스토리 뷰

Android 단말에서 파일관련 작업을 할 때 아래와 같은 오류가 발생하는 경우가 있다.


open failed: EBUSY (Device or resource busy)


보통 무엇인가 지운 후 동일한 이름으로 다시 쓰려고 할 때 주로발생한다.

파일시스템상 파일을 지울 때 바로지워지지않고 정보만 먼저 반영되고난 후 디스크에서 지워지는데,

이 때 삭제중이거나 대기중인 파일명으로 쓰기요청이 들어오면 IO에 오류가 발생한다.


이런현상을 방지하고자 삭제 할 때는 아래와 같이 임시로 이름을 변경하고 지워주자.

그러면 동일한 현상을 일어나지 않을것이다.



 public static void remove(String deleteFilePath){

  try{

    File target = new File( deleteFilePath );


    File trash = new File( target.getAbsolutePath() + System.currentTimeMillis() );

    target.renameTo(trash); // 임시 파일명으로 변경

    trash.delete();

  }catch(Exception e){

   e.printStackTrace();

  }

}



[작성자] devbible.tistory.com

댓글