2014-03-28 1 views
1

순서가 잘못된 벡터의 구성 요소 (바이트)를 계산하는 알고리즘이 있습니다. 벡터를 파일에 저장합니다. 실제 벡터를 실행하면 수백만 바이트의 길이가됩니다. 그러나 간단한 예로서 나는 빈 파일로 시작하고 싶습니다 :파일의 시작 부분에 영향을 미치지 않고 파일의 중간에 데이터를 덮어 쓰려고 시도합니다.

-1 -1 -1 -1 -1 -1 -1 -1

그런 다음 내 알고리즘이 두 값을 입력합니다 시간 :

-1 -1 4-7 -1 -1 -1 -1 모든 때까지

-1 -1 -1 -1 4 7 3 9

값이 입력되었습니다.이 작업이 가능합니까? 임의 액세스 파일을 사용하여 시도했지만 seek() 메서드를 사용하면 편집하려는 모든 값에 대해 0으로 채 웁니다. 알고리즘이 수행 한 이전 계산이 삭제됩니다. 이 프로그램을 사용하면 많은 수의 시퀀스를 처리 할 수 ​​있기 때문에 전체 파일을 메모리로 가져 오는 것은 선택 사항이 아닙니다. 어떤 아이디어?

+0

다음을보십시오. http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem 그렇다면 질문을 업데이트하십시오! :) – dognose

+0

예, 할 수 있습니다. 어렵지만 가능합니다. 맨 먼저 RandomAccessFile 파일을 열어야합니다. RAF는 대부분의 "서류 작업"을 처리 할 것이지만, 귀하는 그 사양이 그 작업에 대해 말하는 것과 일치하도록 특별히주의를 기울여야합니다. –

답변

0

정말로 여기에 대한 제안에 대한 답변은 아닙니다. 미안 난 방식의 메모리와 물건을 삭제하면서

한 번 에서 메모리의 작은 덩어리에서 그 가치가 그럼 그냥 다른 파일에 쓸 파일 스토어를 열고 아직 상태에 대해 언급 할 수

0

대부분의 파일 시스템은 진정한 랜덤 액세스가 아니므로 실용적인 관점에서 전체 파일을 읽고 디스크에 다시 쓰지 않고 파일 중간을 수정하는 것은 어렵거나 불가능합니다. 아마도 당신이해야 할 일은 한 번에 한 섹션에서 파일을 읽고, 그 섹션을 적절하게 수정 한 다음, 임시 파일에 다시 작성하는 것입니다. 작업이 끝나면 원본 파일을 임시 파일로 바꿀 수 있습니다.

관련 문제