Node.js 使用 adm-zip 操作 ZIP 文件

安装依赖

在项目中安装 adm-zip 包:

bash
npm install adm-zip

初始化对象

引入模块后,根据需求选择不同的初始化方式:

typescript
var AdmZip = require('adm-zip')

// 读取现有 ZIP 文件
var zip = new AdmZip('./my_file.zip')

// 创建新的 ZIP 对象(用于生成新压缩包)
var zipCreating = new AdmZip()
  • new AdmZip(path): 加载现有文件。

  • new AdmZip(): 创建空对象用于后续添加文件。

核心功能 API

遍历文件列表

使用 getEntries 获取压缩包内所有条目,并通过 forEach 遍历。

typescript
var zipEntries = zip.getEntries()

zipEntries.forEach(function (zipEntry) {
  console.log(zipEntry.toString())
  if (zipEntry.entryName == 'my_file.txt') {
    console.log(zipEntry.getData().toString('utf8'))
  }
})
  • getEntries(): 返回包含所有条目的数组。

  • zipEntry.entryName: 获取文件在压缩包内的路径。

  • zipEntry.isDirectory: 判断是否为目录。

  • zipEntry.getData(): 获取文件内容的 Buffer 数据。

读取文件内容

直接读取指定文件的文本内容。

typescript
console.log(zip.readAsText('my_file.txt'))
  • readAsText(entryName): 将指定条目内容作为字符串返回。

提取单个文件

将压缩包内的特定文件提取到指定目录。

typescript
zip.extractEntryTo(
  'my_file.txt',   // 条目名称
  './src',         // 目标路径
  false,           // maintainEntryPath: 是否保持条目路径结构
  true             // overwrite: 是否覆盖现有文件
)

解压所有文件

将整个压缩包内容一次性解压到指定目录。

typescript
zip.extractAllTo('./src', true)

创建并写入 ZIP 文件

向 AdmZip 实例添加文件内容,并保存为新的 .zip 文件。

typescript
var content = 'inner content of the file'
// 添加文件:文件名,内容 Buffer,注释
zip.addFile('test.txt', Buffer.from(content, 'utf8'), 'entry comment goes here')
// 写入磁盘
zip.writeZip('./test.zip')


Node.js 使用 adm-zip 操作 ZIP 文件
http://localhost:8090/archives/node.js-shi-yong-adm-zip-cao-zuo-zip-wen-jian
作者
Administrator
发布于
2026年02月02日
许可协议