레이블이 safe인 게시물을 표시합니다. 모든 게시물 표시
레이블이 safe인 게시물을 표시합니다. 모든 게시물 표시

2012년 11월 19일 월요일

하드웨어 리셋 이후에 저장된 파일이 날아간다.


  • 증상하드웨어 리셋 이후에 저장된 파일이 날아간다.
    • 상세 내용: FileOutputStream을 write후 close해서 DDMS의 File Explorer에 해당 파일이 나타났는데도 하드웨어 리셋을 하면 파일 크기가 0이 되거나 파일이 없어진다.
  • 원인: 파일시스템은 버퍼를 활용하고 있다. 버퍼링된 내용이 물리 파일에 씌여지기 전에 하드웨어 리셋이 되기 때문이다.
  • 해결책: FileOutputStream객체의 getFD()를 통해 전달받는 FileDescriptor객체를 이용하여 sync() 를 호출하여, 물리파일에 씌여지는 시기를 강제화 한다.
  • sync()사용 시의 문제점
    • 전화 중과 같은 상황에 sync가 호출 되면 속도가 느려질 수 있다.
  • 참고 링크