C#Ionic.Zip ZIP文件,出现多级目录

时间:2013-12-18 08:45:01

标签: c# zip

解决方案目录

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;
    }
}

谁能帮帮我? 谢谢!

1 个答案:

答案 0 :(得分:1)

查看documentation,我怀疑你想打电话

zip.AddFiles(arrFileName, false, "");

以便不保留目录层次结构。这可能只是

zip.AddFiles(arrFileName, "");

也会奏效;这对我来说并不完全清楚。

(另外,我强烈建议你摆脱方法中的try / catch阻止 - 它比无用更糟糕,因为只是丢失了信息如果在任何ZipFile方法中抛出异常,由于你重新抛出异常的方式,你将失去完整的堆栈跟踪。)