以下代码是将每个文件压缩为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允许我这样做,这是我的意思的一个例子: