2014-10-03 2 views
2

디스크에 파일을 쓰고 싶습니다. writeFile() 작업이 반환되면 파일이 디스크에 쓰여지고 올바르게 기록되었음을 알고 있습니다.자바 쓰기 파일 - 시스템 디스크 캐시 무시

이제 파일을 쓰고 (파일을 읽고 비교 한 후) 내용에 CRC 검사를 할 수 있지만 시스템 디스크 캐싱이 걱정됩니다.

파일을 쓰거나 디스크 캐시를 건너 뛰거나 Java에서 디스크 캐시를 비울 수있는 방법이 있습니까?

의도적으로 환경을 지정하지 않은 이유는 환경 간 솔루션을 사용하는 것이 좋을 것이기 때문입니다. 그렇지 않다면 제 환경은 유닉스 기반입니다.

답변

0

FileChannel.force()은 반환하기 전에 모든 데이터가 디스크에 저장되었는지 확인합니다. API doc에서

:이 채널의 파일에 대한 업데이트가 들어있는 저장소 장치에 기록 할

부대

.

이 방법이이 채널 때문에 파일 에 대한 모든 변경이 만들어 졌음을 보장 반환, 또는이 메소드가 마지막으로 호출 된 이후, 가 기록 된 때이 채널의 파일은 로컬 저장 장치에있는 경우 그 장치에. 이는 시스템 충돌시 중요한 정보가 손실되지 않도록 을 확인하는 데 유용합니다.

당신은 getChannel() 통해 RandomAccessFile 또는 FileOutputStream에서 파일 채널의 보류를 얻을 수 있습니다.

+0

이것은 JVM 버퍼 또는 운영 체제 버퍼를 비우는 것을 의미합니까? – Cheetah

+0

@cheetah 크래시가 발생했을 때 작동한다는 것이 디스크에있는 모든 방법입니다. –