我试图使用sharpziplib将文件添加到现有的.zip文件 - 问题是,zip文件大小为1GB。当我尝试添加1个小文件(400k)时,sharpziplib会在添加新文件之前创建orig zip文件的副本/ temp - 当可用磁盘空间量小于您尝试的zip文件的2倍时,这会产生问题更新
例如: 1GB zip myfile.zip 1GB zip myfile.zip.tmp.293
ZipFile zf = new ZipFile(path);
zf.BeginUpdate();
zf.Add(file); // Adding a 400k file here causes a 1GB temp file to be created
zf.EndUpdate();
zf.Close();
有更有效的方法吗?
谢谢: - )
答案 0 :(得分:3)
找到答案:
http://community.sharpdevelop.net/forums/p/5934/17056.aspx#17056
您好,
如果您要创建新的Zip存档 可能更容易使用 而是ZipOutputStream类。
如果您正在更新,您可以获得 ZipFile类直接写入 如果你在磁盘上的现有存档 选择。 IArchiveStorage(图书馆 提供DiskArchiveStorage) BeginUpdate时传递的键接口 叫做。它有一个UpdateMode 属性可以设置为安全或 直接。
其含义是显而易见的 希望。更新期间失败 可能会破坏档案丢失 数据
hth,-jr -
答案 1 :(得分:0)
如果您是从头开始创建zip文件,请使用ZipOutputStream而不是ZipFile。您可以在SharpZipLib sources中找到相关示例。我不确定ZipOutputStream是否支持添加到现有的zip文件,所以如果这就是你正在做的事情,我恐怕没有一个有用的答案。