2013-01-24 4 views
1

내 zip 파일에는 두 가지 수준의 디렉터리 구조가 있습니다. AddDirectoryByName을 사용하여 루트에 새 디렉토리를 추가했습니다. 기존 디렉토리를 새로 생성 디렉토리로 이동할 수 있습니까? 저는 zip 파일을 추출하지 않고 3 레벨의 디렉토리 구조를 포함하는 zip 파일을 가지고 있습니다.DotNetZip을 사용하여 보관 파일의 디렉터리를 다시 지정할 수 있습니까

현재 아카이브 :

RootFolder - 
      + TopFolder - 
         + SecondFolder 

업데이트 아카이브 파일 :

RootFolder - 
      + NewFolder - 
         + TopFolder - 
            + SecondFolder 
+0

너무 자세히 설명하지 않고. Disk IO를 그냥 피한다면, .net zip을 사용하여 항목을'MemoryStream'으로 추출한 다음 다시 zip 파일에 넣을 수 있다고 생각합니다. –

+0

답장을 보내 주셔서 감사합니다. 나는 단지 속도를 위해 직접 추가하기 위해 500mb 파일을 추출하는 것을 피하고 싶다. – user2008421

답변

2

나는 그것을 알아 냈다. 모든 항목에서 FileName을 수정해야했습니다.

using (ZipFile oZip = ZipFile.Read(sFileZip)) 
{ 
    for (int iIdx = 0; iIdx < oZip.Entries.Count; iIdx++) 
    { 
      string sTmpFileName = oZip[iIdx].FileName; 
      oZip[iIdx].FileName = "NewFolder/" + sTmpFileName; 
    } 
    oZip.Save(); 
}