将zip文件拆分为卷

时间:2017-10-30 14:56:16

标签: c# c#-4.0

以下代码是将每个文件压缩为zip文件的函数。 现在,我希望能够达到压缩限制。

这意味着,如果压缩后的文件是7Mb,我的限制是5Mb,我将获得2个zip文件,一个是5Mb,第二个文件是2Mb。

我的职能:

private void CompressFile(string filePath)
    {
        this.CreateZipFolderPath();

        Crc32 crc32 = new Crc32();
        string fileName = Path.GetFileName(filePath);
        string zippedFilePath = XML_Manager.ZippedPALFilePath + fileName;

        using (ZipOutputStream stream = new ZipOutputStream(File.Create(zippedFilePath.Substring(0, zippedFilePath.LastIndexOf('.')) + ".zip")))
        {
            stream.UseZip64 = UseZip64.Off;
            stream.SetLevel(9);

            byte[] buffer = new byte[4096];
            ZipEntry entry = new ZipEntry(filePath.Substring(filePath.LastIndexOf('\\') + 1));
            entry.DateTime = DateTime.Now;
            stream.PutNextEntry(entry);

            using (FileStream fs = File.OpenRead(filePath))
            {
                int sourceBytes;

                do
                {
                    sourceBytes = fs.Read(buffer, 0, buffer.Length);
                    stream.Write(buffer, 0, sourceBytes);
                }
                while (sourceBytes > 0);
            }

            stream.Finish();
        }
    }

Winrar允许我这样做,这是我的意思的一个例子:

Example

0 个答案:

没有答案