2010-05-15 2 views
3

파일 시스템을 시뮬레이션하면서 1MB 파일을 계속 편집해야합니다. 파일 제어 블록, FAT, 블록 등의 디렉토리를 수정해야합니다.1MB 파일을 지속적으로 편집하는 것이 더 효율적입니까?

Proffesor는 업데이트가있을 때마다 파일을 덮어 쓸 것을 권장합니다. 1MB는 그렇게하는 데 몇 분이 걸리지 않아야하지만이 방법을 좋아하지 않습니다.

여기 가야할 길은 파일 채널입니까? 또한 MappedByteBuffer을 편집하면 매핑 된 파일 영역의 내용도 즉시 편집됩니다. 즉 반사적으로 매핑 되었습니까?

감사합니다.

답변

2

RandomAccessFile이 필요합니다.

+0

내가보기에 RandomAccessFile 문제는 데이터를 덮어 쓸 수있는 유일한 방법은 다음과 같습니다. 1. 위치 P (덮어 쓰려는 데이터 앞에 붙임)에 X 바이트 쓰기 2. 2. 나머지 모든 파일을 작성하십시오 from P + X 3. 파일을 자르십시오 못생긴가요? –

+0

위치를 찾은 다음 해당 위치에 쓸 수 있습니다. 나머지는 당신에게 달렸습니다. 쓰기가 발생할 때 파일에서 탐색 오프셋이있는 메모리 내 객체를 사용하여 파일 시스템이 디스크에 상주하는 방법에 대한 지식이 필요합니다. getChannel() 메서드를 사용하여 파일 채널을 가져올 수도 있습니다. –

+0

MappedByteBuffer가 꽤 좋으며, 또한 찾는 것도 가능해 보입니다. 별 차이가없는 것 같습니다. 또한 ByteBuffer를 기대하는 물건과 함께 MappedByteBuffer를 사용할 수 있습니다. 필자는 이러한 접근 방법 중 하나가 쓰기가 완료 될 때 전체 파일을 다시 작성해서는 안된다고 생각합니다. 너무 비효율적입니다. –

관련 문제