我一直在寻找它,但我找不到它。我想知道是否可以在没有任何外部dll的情况下压缩文件夹,也不能使用任何外部引用 - 只需使用本机功能。
我已经能够使用System.IO.Packaging压缩文件,但它不包含文件夹,我无法告诉它压缩父文件夹。
我知道有外部dll等等,但我想知道是否可以通过本机方式制作它。
谢谢。
答案 0 :(得分:2)
您最好的选择是使用第三方库。但是,如果你不能,我发现这篇博文描述了如何使用System.IO.Packaging来完成它。 请注意,这是c#而不是vb,但是您需要使用该框架的示例。
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来讨论第三方库并手动完成。这也是一个很好的参考。