[英]C# Ionic.Zip ZIP file , Multi-level directory appears
E:\WebSolution\GenerateFiles
| NEW HOTEL-4-64-1379.pdf
| NEW HOTEL-4-64-1379.xls
E:\WebSolution\GenerateFiles
| NEW HOTEL-4-64-1379.pdf
| NEW HOTEL-4-64-1379.xls
| NEW HOTEL-4-64-1379.zip (Extract)
| NEW HOTEL-4-64-1379.pdf
| NEW HOTEL-4-64-1379.xls
E:\WebSolution\GenerateFiles
| NEW HOTEL-4-64-1379.pdf
| NEW HOTEL-4-64-1379.xls
| NEW HOTEL-4-64-1379.zip (Extract)
|WebSolution
|--|GenerateFiles
|--|--|NEW HOTEL-4-64-1379.pdf
|--|--|NEW HOTEL-4-64-1379.xls
================================================== ====
public void Main(){
string path=Server.MapPath("~/GenerateFiles");
string zipPackageFileName=System.IO.Path.Combine(path,"NEW HOTEL-4-64-1379.zip");
string[] arrFileName=new string[]{
System.IO.Path.Combine(path,"NEW HOTEL-4-64-1379.pdf"),
System.IO.Path.Combine(path,"NEW HOTEL-4-64-1379.pdf")
};
CompressFilesToZip(arrFileName,zipPackageFileName);
}
using Ionic.Zip;
public void CompressFilesToZip(String[] arrFileName, string zipPackageFileName)
{
try
{
using (ZipFile zip = new ZipFile())
{
zip.AddFiles(arrFileName);
zip.Encryption = EncryptionAlgorithm.WinZipAes256;
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zip.Password = PASSWORD_ATTACHMENT;
zip.Save(zipPackageFileName);
}
}
catch (Exception e)
{
throw e;
}
}
谁能帮我 ? 谢谢!
查看文档 ,我怀疑您想致电
zip.AddFiles(arrFileName, false, "");
这样就不会保留目录层次结构。 可能只是
zip.AddFiles(arrFileName, "");
也会工作; 对我来说还不是很清楚。
(此外,我强烈建议您摆脱方法中的try
/ catch
块-它比无用的情况更糟,因为它只会丢失信息。如果在任何ZipFile
方法中引发了异常,则将丢失由于您要抛出异常的方式而导致了完整的堆栈跟踪。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.