使用Visual Basic 2010的Zip文件夹

时间:2012-02-03 13:28:00

标签: vb.net visual-studio zip

我一直在寻找它,但我找不到它。我想知道是否可以在没有任何外部dll的情况下压缩文件夹,也不能使用任何外部引用 - 只需使用本机功能。

我已经能够使用System.IO.Packaging压缩文件,但它不包含文件夹,我无法告诉它压缩父文件夹。

我知道有外部dll等等,但我想知道是否可以通过本机方式制作它。

谢谢。

1 个答案:

答案 0 :(得分:2)

您最好的选择是使用第三方库。但是,如果你不能,我发现这篇博文描述了如何使用System.IO.Packaging来完成它。 请注意,这是c#而不是vb,但是您需要使用该框架的示例。

http://weblogs.asp.net/albertpascual/archive/2009/05/18/creating-a-folder-inside-the-zip-file-with-system-io-packaging.aspx

private static void AddFileToZip(string zipFilename, string fileToAdd, string sDirectory)
{
    using (Package zip = System.IO.Packaging.Package.Open(zipFilename, FileMode.OpenOrCreate))
    {
        string destFilename = ".\\" + sDirectory + "\\" + Path.GetFileName(fileToAdd);
        Uri uri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));

        if (zip.PartExists(uri))
        {
            zip.DeletePart(uri);
        }

        PackagePart part = zip.CreatePart(uri, "", CompressionOption.Normal);

        using (FileStream fileStream = new FileStream(fileToAdd, FileMode.Open, FileAccess.Read))
        {
            using (Stream dest = part.GetStream())
            {
                CopyStream(fileStream, dest);
            }
        }
    }
}

该帖子引用another post by Jon Galloway来讨论第三方库并手动完成。这也是一个很好的参考。