2013-02-05 1 views
0

그래서 얼마 전에 DotNetZip Library을 사용 해왔고 어제까지 zipfile 크기를 최대로 늘 렸습니다. 특정 날짜에 PDF를 압축하여 zip 파일 만 허용하는 SFTP 사이트로 전송해야합니다. PDF 파일의 양은 몇백에서 수천 개가 넘고 10K 개가 넘습니다. 어제 DotNetZip 프로세스가 중단되었을 때 약 24,000 개의 PDF 파일이있었습니다. DotNetZip 라이브러리를 사용하여 zip 파일을 분할하는 방법이 있지만 어떤 이유로 SFTP 서버에서 사용중인 시스템은 분할 된 zip 파일을 처리 할 수 ​​없습니다.Grab X 파일 및 우편 번호 DotNetZip 라이브러리 사용

5K (또는 다른 설정된 금액의 파일)를 잡고 zip으로 지우고 다른 파일을 지우고 지퍼로 잠그고 모든 파일이 압축 될 때까지 프로세스를 반복하는 가장 좋은 방법은 무엇입니까? 여기

은 우편 과정의 내 현재 코드입니다 ...

 Dim PathToPDFs As String = "C:\Temp" 'PDF LOCATION 
     Using Zip As ZipFile = New ZipFile() 
      Zip.AddSelectedFiles("(name = *.pdf)", PathToPDFs, "", True) 
      Zip.CompressionMethod = CompressionMethod.Deflate 
      Zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression 
      Zip.Save("C:\Temp\Zipfile.zip") 
     End Using 
+0

아마도 주제를 벗어나지 만 PDF 파일을 압축해야하는 이유는 무엇입니까? 그들은 어쨌든 압축되므로 많은 공간을 절약 할 수 없습니다. – Neolisk

+0

물론이 SFTP 사이트는 Zip 파일 만 받아들이도록 업로드하고 있습니다. 다른쪽에는 자동으로 PDF를 추출하는 프로세스가 있습니다. – Muhnamana

+0

알겠습니다. 제 대답을 확인하십시오. – Neolisk

답변

0

모든 5K ZIP 파일을 먼저 모든 파일을 열거에서는 FileInfo의 목록을 받고, 다음 루프에서 그들을 통해 진행하고, 만들어보세요 (또는 배치 크기에 관계없이). 아무 것도 삭제할 필요가 없습니다. 메모리에 일괄 처리 ID를 유지하면 zip 파일 이름이 그 파일 이름 (예 : pdf_batch_01.zip)에서 파생됩니다.

배치 크기에 도달하면 Save을 작성하고 새로운 ZipFile을 작성하고 루프에 파일을 계속 추가하십시오. 마지막 파일에서 "커밋"하는 것을 잊지 마십시오 (마지막 배치는 대부분 불완전 할 것입니다). 요약하자면, 배치 크기에 도달하거나 마지막 입력을 처리 할 때 ("i=FileCount-1의 가변 길이") 사용자가 "커밋"합니다.

+0

고마워요. 이것에 대한 연구를하고 코드를 작성하는 방법을 정확하게 알아야합니다. – Muhnamana