FileHandle 사용법

NSData 클래스에는 해당 객체의 데이터를 URL에 기록하는 write(to:atomically:) 라는 메소드가 존재한다. 이 때 atomic하게 쓴다는 말은 온전한 데이터를 기록하거나 혹은 아예 기록하지 않거나 둘 중 하나의 결과만 존재하며, 그 중간인 부분적으로 소실되어 잘못된 데이터가 존재하지 않는다는 것을 말한다.

NSDataNSMutableData의 값 시멘틱 타입인 Data에는 해당 메소드가 존재하지 않는다. 대신 write(to:options:) 메소드가 존재하며, NSData.WritingOptions 타입에 .atomic 값이 정의되어 있어서 동일한 동작을 구현하는데에는 문제가 없다.

파일을 atomic하게 기록하는 방법은 임시 파일을 사용하는 것이다. 하나 혹은 그 이상의 임시 파일을 생성하여 데이터를 기록한 후에, 이상 없이 모든 데이터를 기록하게되면 해당 임시 파일을 최종 목적 파일로 교체하거나 복사하는 방식으로 파일 데이터가 중간에 깨지지 않게 하는 것이다.

FileHandle 사용법 더보기