Nodejsでフォルダーをネイティブに圧縮する方法

PHPz
リリース: 2023-04-19 15:29:37
オリジナル
2596 人が閲覧しました

今日のインターネット技術とビジネスの継続的な発展に伴い、ファイル転送とストレージは不可欠な部分になっています。送信や保存を容易にするために、比較的大きなファイルやフォルダーを圧縮パッケージに圧縮する必要があることがよくあります。開発者はフォルダー圧縮をどのように実装しますか?

この記事では、Node.jsを使ってフォルダー圧縮機能をネイティブに実現する方法を紹介します。

Node.js は、Chrome V8 エンジンをベースとした JavaScript 実行環境です。サーバー上で JavaScript を実行できます。また、多数のモジュールも提供されており、開発者はさまざまなアプリケーションを迅速かつ便利に開発できます。プログラム。 Node.js では、ファイル操作は非常に一般的な機能です。次に、フォルダーの圧縮については、Node.js の「zlib」モジュールを使用して実現できます。

まずNode.js環境をインストールする必要がありますので、詳細は公式ドキュメントを参照してください。次に、圧縮するフォルダーのパスをコマンド ラインに入力し、次のコマンドを使用して zlib モジュールをインストールします。

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

インストールが完了したら、フォルダーを圧縮するコードの記述を開始できます。以下は、具体的な実装のコード例です。

const fs = require('fs');
const zlib = require('zlib');

// 要压缩的文件夹路径
const folderPath = './test/';

// 压缩文件名
const destPath = './test.zip';

// 创建压缩流
const zipStream = zlib.createGzip();

// 创建可写流
const writeStream = fs.createWriteStream(destPath);

// 读取要压缩的文件夹
fs.readdir(folderPath, function(err, files) {
  if (err) throw err;
  // 遍历文件夹
  files.forEach(function(file) {
    // 创建读取流
    const readStream = fs.createReadStream(folderPath + file);
    // 把读取流添加到压缩流
    readStream.pipe(zipStream);
  });
  // 把压缩流添加到可写流
  zipStream.pipe(writeStream);
});
ログイン後にコピー

上記のコードでは、Node.js の fs モジュールを使用してフォルダー内のファイルを読み取り、zlib モジュールを使用して圧縮ストリームと書き込み可能なストリームを作成します。圧縮プロセス全体は次のステップに分割できます。

  1. Node.js コア モジュール fs および zlib を導入します。
  2. 圧縮するフォルダーのパスと圧縮ファイル名を定義します。
  3. 圧縮ストリームと書き込み可能なストリームを作成します。
  4. 圧縮するフォルダーを読み込みます。
  5. フォルダー内のすべてのファイルをスキャンし、読み取りストリームを作成し、その読み取りストリームを圧縮ストリームに追加します。
  6. 圧縮ストリームを書き込み可能なストリームに追加して、圧縮を実現します。
  7. 圧縮が完了したら、書き込み可能ストリームと圧縮ストリームを閉じる必要があります。

上記のコードを実行すると、現在のディレクトリに「test.zip」という名前のファイルが生成されます。このファイルには、圧縮したいフォルダー内のすべてのファイルが含まれています。

最後にまとめをさせていただきます。 Node.js の zlib モジュールと fs モジュールを通じて、フォルダーを圧縮してファイルの送信と保存を容易にすることができます。もちろん、「アーカイバー」や「zip-stream」などのサードパーティ モジュールを使用して同様の機能を実現することもできますが、軽量のアプリケーション シナリオでは、ネイティブの Node.js 実装も良い選択です。

以上がNodejsでフォルダーをネイティブに圧縮する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!