2013-08-03 5 views
0

동시에 다른 스레드에서 동일한 ZIP 아카이브를 읽고 쓰려면 파일 액세스가 필요합니다.ZIP 파일 내의 다른 폴더에 동시 액세스

각 스레드는 아카이브 내부에 자체 하위 디렉토리를 가지고 있으므로 충돌은 발생하지 않을 것입니다. 그러나 운영 체제는 그것에 대해 신경 쓰지 않습니다.

ZIP 작업의 경우 libzip을 사용합니다. 어떻게 액세스를 수행 할 수 있습니까? 특별한 것을 돌봐야합니까?

응용 프로그램을 시작할 때 압축 파일을 압축 해제하고 종료 할 때 압축을 풀 수 있지만 아카이브에서 직접 작업하기를 원합니다. 그래서이 질문을하고 있습니다.

답변

1

당신은 ZIP 형식을 사용하는 경우

불행하게도, 디렉토리의 이름은 정말 중요하지 않습니다/병렬 포장 풀기 즉 어렵지 않을해야하지만, 파일을 포장하는 것은 분명히 아닌 사소한 것 - 헤더 파일이 저장되는 위치는 경로와 파일 이름이 하나의 덩어리 인 구조이며 다른 디렉토리는 zip 파일 내에 존재하지 않습니다.

각 파일의 데이터가 이전 파일 다음과 다음 파일 이전에 하나의 연속적인 데이터 스트림으로 저장되기 때문에 데이터가 더 좋을 수는 없습니다.

압축 된 데이터가 준비된 곳, 물론 데이터가 완성되면 할당 된 공간과 헤더가 디렉토리에 추가 된 zip 아카이브 기능을 만들 수 있습니다. 잠금없이 실제 파일에 데이터를 쓸 수 있습니다. [자물쇠를 사용하지 않고 파일의 다른 위치에 얼마나 잘 쓰는지 잘 모르겠지만].

(그것은 아주 잘 위키 피 디아 here 설명,하지만 당신은 서로 다른 데이터 구조의 결과가 될 것을 이런 일을 공부하지 않은 경우 완전히 명확하지 않을 수 있습니다)

+0

1. zip 파일의 * 일부분을 업데이트하는 것은 확실히 사소한 일입니다. 당신이 할 수있는 유일한 일은 새롭게 압축 된 데이터가 정확히 원래의 청크의 크기인지 테스트하는 것입니다. – usr2564301