Ionic Zip文件夹结构

时间:2012-12-06 16:17:54

标签: xml vb.net zip

我正在尝试向我的程序添加一些压缩代码,但是,我似乎无法正确地获得文件夹结构。

我希望文件夹看起来像这样:

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

因此,indidivual文件将位于zip的根文件夹中,我添加的文件夹将成为根目录的子文件夹。我的代码在下面......

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")这样的东西来为单个文件创建一个文件夹......但是,我希望这些文件存储在根目录中。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

如果查看AddFile方法的文档,可以传入两个参数:

  1. 文件名
  2. 存档中的目录路径。
  3. Ionic文档指出,对于第二个参数,规则如下:

      

    指定用于覆盖中的任何路径的目录路径   文件名。此路径可能或可能不对应于中的真实目录   当前的文件系统。如果zip中的文件是稍后的   提取后,这是用于提取文件的路径。传递null   (VB中没有任何内容)将使用fileName上的路径(如果有)。通过   空字符串(“”)将在项目的根路径中插入项目   档案

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

    这意味着在上面的代码中,只传入第一个参数(文件名),您将使用正在添加的文件的完整路径。将你想要的路径添加到AddFile方法作为你的第二个参数,你就可以了。