2012-12-18 3 views
1

현재 나의 프로젝트에서 나는 고객을 위해 복사 한 리소스로 엄청난 수의 파일 (수십만 개의 밀리 파드 파일 - 1 ~ 30KB 사이의 파일)을 다루고있다. 시간이 많이 걸리는 직업이다. 나는 각각의 1000 또는 10000 하나를 하나의 파일로 패키징하는 데 도움이되는 패키징 메커니즘을 찾고 있는데,이 경우 더 많은 파일 수가 적어지기 때문에 더 많은 복사 속도가 발생합니다. 또한 응용 프로그램에서 읽는 동안 압축을 풀지 않아도되고 압축도 필요하지 않습니다. 분산되거나 리소스가 클라이언트간에 공유되는 응용 프로그램의 성능과 성격 때문에 필자가 작성하거나 변경하는 동안 검색하고 다음 ZIP 라이브러리에 대해 알고 :압축을 풀지 않고 읽을 파일 패키징

  • SharpZipLib
  • DotNetZip을
  • System.IO.Packaging

그러나 라이브러리에서 파일에 액세스 할 수있는 파일을 통해 반복 -at 이내로 할을 할 필요 이상으로 보인다 우편이나 패키지와 함께 t 추출. zip 또는 패키지 파일의 주소 (폴더 구조 계층 구조)를 통해 파일에 액세스해야합니다! 다음 링크는 zip 파일을 반복을 통해 대답하는 유사한 질문입니다

how-to-read-data-from-a-zip-file-without-having-to-unzip-the-entire-file

content-inside-zip-file

사람에게이 문제에 대한 어떤 아이디어 나 솔루션을?

그건 그렇고, 저는 C#으로 코딩하고 있습니다. 프로젝트는 윈도우 폼 기반입니다.

답변

0

나 자신의 패키지 형식을 사용합니다. GZipStream 또는 다른 것. 바이트 값을 얻은 후 각 파일 (이름, 시작 위치 및 길이)을 포함하는 패키지 형식의 헤더를 만들어야하는 경우 각 파일에 대해 GZipStream을 사용하여 파일을 압축합니다. 이 데이터를 헤더에 넣으면 패키지 시작 부분에 표시됩니다. 원하는 파일에 대한 정보를 얻을 수 있으며 압축 된 데이터의 위치를 ​​찾은 후 지정된 길이의 바이트 배열을 가져옵니다.

그러나 하나의 파일을 수정하는 경우 수정 된 파일 다음에 모든 색인을 다시 계산해야합니다.

+0

감사합니다. @ jordsti, 당신의 답은 저에게 어떤 압축없이 더 큰 파일로 작은 파일을 포장하는 것에 대한 아이디어를주었습니다! –