如何使用node-gzip压缩文件而非文本?
使用node-gzip压缩文件的正确方法
node-gzip的gzip方法仅接受字符串或Buffer类型的数据,直接传入文件路径或未读取的文件对象无法正常工作。你需要先通过Node.js的fs模块读取文件内容为Buffer,再传入gzip方法处理。
下面是完整的压缩/解压文件示例:
压缩文件步骤
- 引入
node-gzip的gzip方法和Node.js的fs/promises(异步文件操作适配await语法) - 读取目标文件的Buffer内容
- 调用
gzip压缩Buffer - 将压缩后的Buffer写入新文件
const { gzip, ungzip } = require('node-gzip'); const fs = require('fs/promises'); async function compressFile() { // 读取源文件(替换为你的实际文件路径) const fileBuffer = await fs.readFile('./fileA'); // 压缩文件内容 const compressedBuffer = await gzip(fileBuffer); // 保存压缩后的文件(建议用.gz作为后缀) await fs.writeFile('./fileA.gz', compressedBuffer); console.log('文件压缩完成'); } // 执行压缩函数 compressFile().catch(err => console.error('压缩出错:', err));
解压文件步骤
如果需要解压生成的.gz文件,可参考以下代码:
async function decompressFile() { // 读取压缩文件 const compressedBuffer = await fs.readFile('./fileA.gz'); // 解压内容 const decompressedBuffer = await ungzip(compressedBuffer); // 保存解压后的文件 await fs.writeFile('./fileA_decompressed', decompressedBuffer); console.log('文件解压完成'); } // 执行解压函数 decompressFile().catch(err => console.error('解压出错:', err));
注意事项
- 无论处理ASCII文本还是二进制文件,读取为Buffer都能兼容,无需额外转换
- 确保文件路径正确,避免因路径问题导致读取失败
- 所有异步操作需放在async函数中,或用
.then()链式调用处理Promise
内容的提问来源于stack exchange,提问作者kn11n
相关产品推荐
相关产品推荐

