c#sharpziplib将文件添加到现有存档

Gra*_*ant 7 c# append add archive sharpziplib

我正在尝试使用以下代码将文件添加到现有存档.运行时不会显示任何错误或异常,但也不会将任何文件添加到存档中.有什么想法吗?

        using (FileStream fileStream = File.Open(archivePath, FileMode.Open, FileAccess.ReadWrite))
        using (ZipOutputStream zipToWrite = new ZipOutputStream(fileStream))
        {
            zipToWrite.SetLevel(9);

            using (FileStream newFileStream = File.OpenRead(sourceFiles[0]))
            {
                byte[] byteBuffer = new byte[newFileStream.Length - 1];

                newFileStream.Read(byteBuffer, 0, byteBuffer.Length);

                ZipEntry entry = new ZipEntry(sourceFiles[0]);
                zipToWrite.PutNextEntry(entry);
                zipToWrite.Write(byteBuffer, 0, byteBuffer.Length);
                zipToWrite.CloseEntry();

                zipToWrite.Close();
                zipToWrite.Finish();
            }
        }
Run Code Online (Sandbox Code Playgroud)

Che*_*eso 15

DotNetZip中,将文件添加到现有zip非常简单可靠.

using (var zip = ZipFile.Read(nameOfExistingZip))
{
    zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
    zip.AddFile(additionalFileToAdd);
    zip.Save();
}
Run Code Online (Sandbox Code Playgroud)

如果要为该新文件指定目录路径,请对AddFile()使用不同的重载.

using (var zip = ZipFile.Read(nameOfExistingZip))
{
    zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
    zip.AddFile(additionalFileToAdd, "directory\\For\\The\\Added\\File");
    zip.Save();
}
Run Code Online (Sandbox Code Playgroud)

如果要添加一组文件,请使用AddFiles().

using (var zip = ZipFile.Read(nameOfExistingZip))
{
    zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
    zip.AddFiles(listOfFilesToAdd, "directory\\For\\The\\Added\\Files");
    zip.Save();
}
Run Code Online (Sandbox Code Playgroud)

您不必担心Close(),CloseEntry(),CommitUpdate(),Finish()或任何其他gunk.