我试图将文件添加到Zip文件,保留目录.下面的代码基本上是工作的,只要我没有几个100 Mb的文件压缩.如果我只用一个大约250 Mb的文件压缩一个目录(在一个有足够内存BTW的系统上),我就会得到一个OutOfMemory异常write.Write().
我已经修改了代码以读取块,因为它在读取/写入整个文件时首次失败.我不知道为什么它仍然失败?
using (FileStream zipToOpen = new FileStream(cZipName, eFileMode))
ZipArchiveEntry readmeEntry = archive.CreateEntry(cFileToBackup
);
using (BinaryWriter writer = new BinaryWriter(readmeEntry.Open()))
{
FileStream fsData = null; // Load file into FileStream
fsData = new FileStream(cFileFull, FileMode.Open, FileAccess.Read);
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = fsData.Read(buffer, 0, buffer.Length)) > 0)
{
writer.Write(buffer,0,bytesRead); // here it fails
fsData.Flush(); // ->CHANGED THIS TO writer.Flush() SOLVED IT - nearly..
}
}
fsData.Close();
}
Run Code Online (Sandbox Code Playgroud)
编辑:Arkadiusz …