我能够将数据附加到这样的文件中
行(我会得到的)
fs.appendFile('./file.txt', JSON.stringify(row) + '\n', (err) => {
if (err) throw err;
});
但是如何在同时压缩数据的同时“附加”数据?我不确定这是否可能。如果是,则任何指针都将非常有帮助。 我可以通过管道实现它吗?如果是,怎么办?
zip.appendData('./file.zip',JSON.stringify(row) + '\n', (err) => {
if (err) throw err;
});
像上面一样?
答案 0 :(得分:1)
我不知道是否可以在不重写的情况下附加到.zip
存档中。
如果考虑使用.gz
文件,则可以使用内置的zlib
模块将其直接附加到.gz
文件中。
const zlib = require('zlib');
zlib.gzip(JSON.stringify(row), (err, data) => {
if (err) throw err;
fs.appendFile('file.txt.gz', data, err => {
if (err) throw err;
})
})
答案 1 :(得分:0)
我不确定这是否行得通,但也许会对您有所帮助。
您的项目需要zlib
包
npm install zlib
代码:
const fs = require('fs');
const zlib = require('zlib');
function WriteAndZip(filename) {
return new Promise(async function (resolve, reject) {
fs.appendFile(`./your_path/${filename}`, JSON.stringify(row) + '\n', (err) => {
if (err) throw err;
});
const fileContents = fs.createReadStream(`./your_path/${filename}`);
const writeStream = fs.createWriteStream(`./your_path/${filename}.gz`);
const zip = zlib.createGzip();
fileContents.pipe(zip).pipe(writeStream).on('finish', (err) => {
if (err) return reject(err);
else resolve();
});
});
}