我们在 nodejs 中写入数据时是否可以压缩数据?
Is it possible to zip data as we write the data in nodejs?
我可以像这样将数据附加到文件
行(这个我会得到)
fs.appendFile('./file.txt', JSON.stringify(row) + '\n', (err) => {
if (err) throw err;
});
但是如何在压缩数据的同时 "append" 呢?我不确定这是否可能,如果是的话,任何指示都会非常有帮助。
我可以通过管道实现吗?如果是怎么办?
zip.appendData('./file.zip',JSON.stringify(row) + '\n', (err) => {
if (err) throw err;
});
类似上面的内容?
我不确定这是否有效,但也许对你有帮助。
您的项目需要 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();
});
});
}
我不知道是否可以在不重写的情况下附加到 .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;
})
})
我可以像这样将数据附加到文件
行(这个我会得到)
fs.appendFile('./file.txt', JSON.stringify(row) + '\n', (err) => {
if (err) throw err;
});
但是如何在压缩数据的同时 "append" 呢?我不确定这是否可能,如果是的话,任何指示都会非常有帮助。 我可以通过管道实现吗?如果是怎么办?
zip.appendData('./file.zip',JSON.stringify(row) + '\n', (err) => {
if (err) throw err;
});
类似上面的内容?
我不确定这是否有效,但也许对你有帮助。
您的项目需要 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();
});
});
}
我不知道是否可以在不重写的情况下附加到 .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;
})
})