Typescript で圧縮ファイルを展開する方法

typescript で tar, gzip, tgz, zip 形式のファイルを展開する方法を紹介します。

1. Compressing モジュールのインストール

compressing というモジュールを使用します。

https://www.npmjs.com/package/compressing

npm install compressing

でインストールできます。

2. 展開を行う _uncompress クラス

すこし長いですが、各関数を1つのクラスにまとめています。

    // uncomp.ts
    import * as compressing from "compressing";
    //
    export interface IUnCompress {
        unzip(filepath: string, destdir: string): any;
        ungzip(filepath: string, destdir: string): any;
        untar(filepath: string, destdir: string): any;
        untgz(filepath: string, destdir: string): any;
    }
    export default class _UnCompress implements IUnCompress{
    //
        unzip(filepath: string, destdir: string) {
            compressing.zip.uncompress(filepath, destdir)
            .then( () => {
                return 0;
            })
            .catch( (e) => {
                return e;
            })
        }
    //
        ungzip(filepath: string, destdir: string) {
            compressing.gzip.uncompress(filepath, destdir)
            .then( () => {
                return 0;
            })
            .catch( (e) => {
                return e;
            })
        }
    //
        untar(filepath: string, destdir: string) {
            compressing.tar.uncompress(filepath, destdir)
            .then( () => {
                return 0;
            })
            .catch( (e) => {
                return e;
            })
        }
    //
        untgz(filepath: string, destdir: string) {
            compressing.tgz.uncompress(filepath, destdir)
            .then( () => {
                return 0;
            })
            .catch( (e) => {
                return e;
            })
        }
    //
    }

3. 関数の説明

1. unzip 関数

  • 処理内容:zip形式のファイルを展開します。
  • 引数: filepath 展開するファイルパス, destdir 展開先ディレクトリパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

2. ungzip 関数

  • 処理内容:gzip形式のファイルを展開します。
  • 引数: filepath 展開するファイルパス, destdir 展開先ディレクトリパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

3. untar 関数

  • 処理内容:tar形式のファイルを展開します。
  • 引数: filepath 展開するファイルパス, destdir 展開先ディレクトリパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

4. untgz 関数

  • 処理内容:tgz形式のファイルを展開します。
  • 引数: filepath 展開するファイルパス, destdir 展開先ディレクトリパス
  • 返り値: 正常終了の場合は 0、異常終了の場合はエラー内容を返します。

4. 使い方

    import _UnComp from "./uncomp";
    //
    const UnComp = new _UnComp;
    //
    let zipfile: string = "./sample.zip";
    let gzipfile: string = "./sample.gzip";
    let tarfile: string = "./sample.tar";
    let tgzfile: string = "./sample.tgz";
    let destdir:string = "./test/"
    //
    UnComp.unzip(zipfile, destdir);
    UnComp.ungzip(gzipfile, destdir);
    UnComp.untar(tarfile, destdir);
    UnComp.untgz(tgzfile, destdir);

クラスをimoprt して、new でインスタンスを生成している感じです。 あとは、関数を呼び出します。

5. ダウンロード

uncomp.ts はこちらからダウンロード可能です。

uncomp.ts

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

実践TypeScript【電子書籍】[ 吉井健文 ]
価格:3726円 (2019/7/23時点)

[

楽天で購入

](https://hb.afl.rakuten.co.jp/hgc/18648e8b.7d833591.18648e8c.ed1bab3c/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenkobo-ebooks%2F5456816fd8833397a6aa8b80647873ad%2F%3Fscid%3Daf_pc_bbtn&m=http%3A%2F%2Fm.rakuten.co.jp%2Frakutenkobo-ebooks%2Fi%2F18341447%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxfQ==)

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱