小编Dic*_*ick的帖子

在C#中使用BinaryWriter将文件添加到zip文件时内存不足

我试图将文件添加到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 …

c# out-of-memory binarywriter

1
推荐指数
1
解决办法
2271
查看次数

标签 统计

binarywriter ×1

c# ×1

out-of-memory ×1