2022-03-22
#js 
AIやVRなど派手なプログラミングも楽しいけど、データ変換や圧縮など縁の下の力持ち的、地味なプログラミングも好き。

ExcelやWordのデータファイル(xlsx/docx)、iPhoneでAR表示が気軽にできる3Dファイル形式USDZなど、実はzipで圧縮されているファイルフォーマットは意外と多い。そこで、zip/unzipを手軽に扱える、Deno用ライブラリをNode.js用ライブラリ zlib.js を元に作成!

下記のコードで、zip圧縮、unzip展開ができる。 import { zip } from "https://taisukef.github.io/zlib.js/es/zip.js"; import { unzip } from "https://taisukef.github.io/zlib.js/es/unzip.js"; const org = "test / テスト文字列"; //const data = new Uint8Array(await Deno.readFile("test.txt")); const data = new TextEncoder().encode(org); const z = zip(); z.addFile(data, { filename: new TextEncoder().encode("test.txt") }); const bin = z.compress(); console.log(bin, bin.length); //await Deno.writeFile("test.txt.zip", bin); const zips = unzip(bin); const filenames = zips.getFilenames(); console.log(filenames); const plain = new TextDecoder().decode(zips.decompress(filenames[0])); console.log(plain); Denoならライブラリのインストール不要、GitHub Pagesでホスティングしているライブラリを直接読み込んで使えます! ブラウザからも直接使えます!

ファイル名もバイナリ化(Uint8Array)して渡すようになっているので、WindowsのSJISとMacのUTF-8の問題などの解決にも使えそう。

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS