nodejs - 更改zip文件的内容而不重新生成整个存档

时间:2017-04-01 19:17:09

标签: node.js file zip

我正在使用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周期来更新一个文件

1 个答案:

答案 0 :(得分:2)

在这里假设JSZip v2(zip.generate()):

您可以使用asNodeBuffer()获取缓冲区,修改它并更新文件的内容:

var buffer = zip.file("file1").asNodeBuffer();
// change buffer
zip.file("file1", buffer);

编辑:如果你的意思是编辑存储在磁盘上的zip文件:不,JSZip不能这样做。