我正在使用node-zip(在引擎盖下使用JSZip)。我需要修改zip文件的内容,我希望能够修改它而不再生成整个zip,因为大型档案可能需要很长时间。这是一个例子:
var zip = new JSZip()
// Add some files to the zip
zip.file('file1', "file 1 contents\n")
zip.file('file2', "file 2 contents\n")
zip.file('file3', "file 3 contents\n")
// Generate the zip file
buffer = zip.generate()
// Make some changes
zip.file('file1', "changed file contents\n")
// Now I have to generate the entire zip again to get the buffer
buffer = zip.generate()
我该怎么做
updatedBuffer = zip.updateFile(buffer, 'file1', 'changed file contents\n')
我获得更新的存档缓冲区,但我只需花费CPU周期来更新一个文件
答案 0 :(得分:2)
在这里假设JSZip v2(zip.generate()
):
您可以使用asNodeBuffer()
获取缓冲区,修改它并更新文件的内容:
var buffer = zip.file("file1").asNodeBuffer();
// change buffer
zip.file("file1", buffer);
编辑:如果你的意思是编辑存储在磁盘上的zip文件:不,JSZip不能这样做。