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の問題などの解決にも使えそう。