2010-12-10 1 views
1

Origianlly, RandomAccessFile을 만들었을 때 일부 바이트를 건너 뛰어 Null로 남았지 만 이제는 내가 작성한 바이트 중 일부를 삭제해야합니다. 지금 내가하고있는 일은 위치를 공백으로 덮어 쓰는 것이지만 공백으로 되돌릴 수있는 방법이 있습니까?RandomAccessFile의 speicifc 바이트를 다시 null로 설정할 수 있습니까?

EDIT : 값을 포함해야하므로 건너 뛸 때 기본적으로 할당 된 원래 값으로 다시 설정하는 방법을 알고 싶습니다.

답변

2

파일에는 "빈"바이트를 포함 할 수 없습니다. 파일의 각 바이트는 0에서 255 사이의 값을 가져야합니다.

특정 시점 이후에 모든 바이트를 "지우려면"RandomAccessFile.setLength을 사용하여 파일을 자릅니다. 귀하의 코멘트에 대해서는


: 당신이 다시 원래 값의 일부 바이트를 설정하려면, 난 당신이 각각의 호출에 업데이트 원래 바이트 값으로 인덱스에서지도와 함께 자신의 클래스의 RandomAccessFile을 캡슐화 제안 ~ write. 이 서브 클래스는, 다음의 메소드 restore(int i)를 제공해, 인덱스의 최초의 값을 검색해 인덱스 i의 바이트의 값을 복원합니다.

+0

원래 뜻대로 되겠습니다. – chustar

+0

@chustar : 그러면 원래 무엇인지 알 필요가 있습니다. –

+0

아니요, 'RandomAccessFile'에 "실행 취소"기록이 없습니다. – aioobe

1

당신이하려는 일이 명확하지 않지만 파일의 시작이나 중간에서 바이트를 "삭제"할 수는 없습니다. 일반적으로 은 파일을 잘라낼 수는 있지만 중간에서 비트를 제거 할 수는 없습니다. 일반적으로 새 파일을 만들고 원하는 데이터 만 복사 한 다음 적절하게 파일 이름을 바꿉니다.

+0

나는 마침내 내가하고있는 것을 이해했다. 나는 "삭제"하고 싶은 부분에 "null"문자'\ 0'을 쓰는 방법을 찾고있었습니다. 이런 종류의 작업을위한 이름이 있는지 나는 몰랐다. – chustar

+0

@chustar : 예, 정상적으로 데이터를 쓰고 있습니다. 데이터가 0 바이트가되는 곳입니다. (문자가 아니라, 텍스트와 바이너리 데이터를 구별하는 것이 중요합니다.) RandomAccessFile 자체는 바이너리 데이터를 처리합니다. –