2012-12-06 147 views
1

我想向我的程序添加一些壓縮代碼,但是,我似乎無法獲得文件夾結構。Ionic Zip文件夾結構

我想要的文件夾看起來像這樣:

Root (
    -subfolder1 
    -subfolder2 
    individual file 
    individual file 
    individual file) 

所以,indidivual文件將在壓縮的根文件夾,我補充將成爲子文件夾的根目錄的文件夾。我的代碼如下...

Using zip As New ZipFile() 
    For Each item As System.Xml.XmlNode In Source 
     If item.InnerText.Contains(".") Then 
      zip.AddFile(item.InnerText) 
     Else 
      zip.AddDirectory(item.InnerText, GetLastDirName(item.InnerText)) 
     End If 
    Next 

    For Each item As System.Xml.XmlNode In Destin 
     Dim path As String = item.InnerText 
     zip.Save(path.Replace(".zip", "") & "_Archive_" & DateString & ".zip") 
    Next 
End Using 

但是,zip.addfile(item.innertext)行將各個文件添加到完整路徑。因此,如果該文件是C:\Pictures\image.jpg ...它將在所有子文件夾中出現在zip文件中。

我也嘗試過像zip.addfile(item.innertext, "individual files")這樣的東西來爲單個文件創建文件夾......但是,我希望這些文件存儲在根目錄中。

有什麼建議嗎?

回答

2

如果你看一下該方法AddFile的文檔,有兩個參數,你可以傳遞:

  1. 文件名
  2. 在檔案的目錄路徑。

離子文檔指出該第二參數,所述規則如下:

指定的目錄路徑使用覆蓋在 文件名的任何路徑。此路徑可能會或可能不會對應於當前文件系統中的實際目錄。如果zip中的文件稍後提取 ,則這是用於提取文件的路徑。傳遞null (VB中沒有)將使用fileName上的路徑(如果有的話)。通過 空字符串(「」)將在 存檔中的根路徑中插入項目。

源(http://dotnetzip.herobo.com/DNZHelp/html/202e1fb5-8891-888f-8e91-1340f7cd80c9.htm)

的意思是在你的代碼上面,在那裏你傳遞只有第一個參數(文件名),您將使用您添加的文件的完整路徑。將您想要的路徑添加到AddFile方法中作爲第二個參數,並且您很好。