Nodejsでアーカイバーを使用する方法

WBOY
リリース: 2022-06-29 16:00:54
オリジナル
2466 人が閲覧しました

nodejs では、アーカイバーは、いくつかのファイルを zip 形式または tar 形式の圧縮パッケージに圧縮してパッケージ化するために使用されます。アーカイバーは、プラットフォーム間でパッケージ化機能を実装できるモジュールです。パッケージ化形式は zip と tar で、これらを使用できます。 「npm install archiver」ステートメントは、使用前にモジュールをインストールします。

Nodejsでアーカイバーを使用する方法

この記事の動作環境: Windows 10 システム、nodejs バージョン 12.19.0、Dell G3 コンピューター。

nodejs でアーカイバを使用する方法

場合によっては、いくつかのファイルを zip 形式または tar 形式の圧縮パッケージに圧縮してパッケージ化する必要がある場合や、ディレクトリをパッケージ化する必要がある場合もあります。 Node.js では、サードパーティのパッケージ アーカイバーを使用して操作を実行できます。

archiver は、nodejs でクロスプラットフォームパッケージング機能を実現するモジュールで、zip および tar パッケージを作成でき、比較的使いやすいサードパーティ製モジュールです。

使用前にアーカイブ モジュールをインストールしてください。

コードは次のとおりです:

npm install archiver
ログイン後にコピー

概要:

// 由于需要读取文件所以需要fs模块,也必须导入
const fs = require('fs');
const archiver = require('archiver');
ログイン後にコピー

使用法

基本的な使用法は次のとおりです:

// 第一步,导入必要的模块
const fs = require('fs');
const archiver = require('archiver');

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩指定文件
var stream = fs.createReadStream(__dirname + "/hello.txt");// 读取当前目录下的hello.txt
archive.append(stream, {name: 'hello.txt'});

// 第五步,完成压缩
archive.finalize();
ログイン後にコピー

Afterコードが正常に実行されると、プロジェクトが存在するディレクトリに hello.zip という名前の圧縮パッケージが生成され、圧縮パッケージには圧縮ファイル hello.txt が含まれます。
Nodejsでアーカイバーを使用する方法

単一ファイルの圧縮

圧縮ファイルでは、archive.append()archive を使用できます。 file () を使用して操作を実行します。

単一ファイルを圧縮するための API は次のとおりです:

// 添加一个文件到压缩包,通过可写流的方式读取数据附加文件
const file1 = __dirname + '/file1.txt';
archive.append(fs.createReadStream(file1), { name: 'file1.txt' });

//添加一个文件到压缩包,通过将字符串写入到文件的方式附加文件
archive.append('string cheese!', { name: 'file2.txt' });

// 添加一个文件到压缩包,通过Buffer数据的方式附加文件
const buffer3 = Buffer.from('buff it!');
archive.append(buffer3, { name: 'file3.txt' });

// 添加一个文件到压缩包,直接传入文件路径
archive.file('file1.txt', { name: 'file4.txt' });
ログイン後にコピー

完全な例は次のとおりです:

// 第一步,导入必要的模块
const fs = require('fs');
const archiver = require('archiver');

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩指定文件
archive.append(fs.createReadStream(__dirname + '/hello.txt'), {name: 'hello.txt'});// 文件流
archive.append('index.html', {name: 'index.html'});// 文件路径
archive.append(Buffer.from("这是Buffer格式的数据"), {name: 'buffer.txt'});// Buffer对象
archive.append("直接传入字符串", {name: 'string.txt'});// 字符串

// 第五步,完成压缩
archive.finalize();
ログイン後にコピー

Nodejsでアーカイバーを使用する方法
注: archive .append()2 番目のパラメータ {name: 'hello.txt'} は、圧縮パッケージ内の対応するファイルの名前を変更します。

複数のファイルを圧縮する

複数のファイルを圧縮する場合は、archive.append() メソッドを呼び出してファイルを追加します。これらの追加ファイルは、圧縮パッケージに入っています。例:

// 第一步,导入必要的模块
const fs = require('fs');
const archiver = require('archiver');

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩多个文件到压缩包中
archive.append('index.html', {name: 'index.html'});
archive.append('hello.js', {name: 'hello.js'});
archive.append('hello.html', {name: 'hello.html'});
archive.append('db.json', {name: 'db.json'});

// 第五步,完成压缩
archive.finalize();
ログイン後にコピー

Nodejsでアーカイバーを使用する方法

ディレクトリの圧縮

ディレクトリを圧縮する場合は、archive.directory() を使用する必要があります。それを完成させるために。 API は次のとおりです:

// 将指定目录打包压缩到压缩包中,并且重命名为new-subdir,并且subdir目录下的所有文件仍然在new-subdir目录下,而不是在压缩包的根目录下
archive.directory('subdir/', 'new-subdir');

// 将指定目录下的所有文件打包压缩到压缩包中,而这些文件在压缩包的根目录,而非子目录中
archive.directory('subdir/', false);
ログイン後にコピー

完全な例は次のとおりです:

// 第一步,导入必要的模块
const fs = require('fs');
const archiver = require('archiver');

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver('zip', {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩目录到压缩包中
archive.directory('public/', 'new-public');
archive.directory('demo/', false);

// 第五步,完成压缩
archive.finalize();
ログイン後にコピー

Nodejsでアーカイバーを使用する方法

推奨学習: 「nodejs ビデオ チュートリアル

以上がNodejsでアーカイバーを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート