1

このコードでzipファイルを作成しようとしていますが、何も機能しません。ZipFileのコンストラクターは 、引数でオーバーロードするだけで()SAVEオーバーロードせず、メソッドがありませんか? どうしたの?

   using (ZipFile zip = new ZipFile())
        {
            zip.AddEntry("C://inetpub//wwwroot//Files//Wireframes//" + url, zip.Name);
            zip.AddDirectory("C://inetpub//wwwroot//Files//Wireframes//" + url);
            zip.Save(downloadFileName);
        }
4

1 に答える 1

1

SharpZipLibを使用してディレクトリ全体を圧縮するには、次の方法を試すことができます。

    private void ZipFolder(string folderName, string outputFile)
    { 
        string[] files = Directory.GetFiles(folderName);
        using (ZipOutputStream zos = new ZipOutputStream(File.Create(outputFile)))
        {
            zos.SetLevel(9); // 9 = highest compression
            byte[] buffer = new byte[4096];
            foreach (string file in files)
            {
                ZipEntry entry = new ZipEntry(Path.GetFileName(file));
                entry.DateTime = DateTime.Now;
                zos.PutNextEntry(entry);
                using (FileStream fs = File.OpenRead(file))
                {
                   int byteRead;
                   do
                   {
                        byteRead = fs.Read(buffer, 0,buffer.Length);
                        zos.Write(buffer, 0, byteRead);
                   }
                   while (byteRead > 0);
                }
            }
            zos.Finish();
            zos.Close();
        }

ご覧のとおり、例とはまったく異なるコードがあります。
上記のコメントで述べたように、あなたの例はDotNetZipから来ているよう です。そのライブラリを使用したい場合、コードは次のようになります。

using (ZipFile zip = new ZipFile())                    
{                        
    zip.AddFile("C://inetpub//wwwroot//Files//Wireframes//" + url);
    zip.AddDirectory("C://inetpub//wwwroot//Files//Wireframes//" + url, "WireFrames");
    zip.Save(downloadFileName);                    
}            

編集:特定のディレクトリにすべてのPNGファイルを追加するには

using (ZipFile zip = new ZipFile())                    
{                        
    string  filesPNG = Directory.GetFiles("C://inetpub//wwwroot//Files//Wireframes//" + url, "*.PNG);
    foreach(string file in filesPNG)
        zip.AddFile(file);
    zip.Save(downloadFileName);                    
}            
于 2012-06-11T10:25:07.460 に答える