Deno:处理tar存档导致校验和错误(标准库)

问题描述 投票:1回答:1

我想借助tar.ts中的Standard Library处理tar存档。

可以通过以下代码将存档成功写入test.tar

import { Tar, Untar } from "https://deno.land/std/archive/tar.ts";

// create tar archive
const tar = new Tar();
const content = new TextEncoder().encode("hello tar world!");
await tar.append("output.txt", {
  reader: new Deno.Buffer(content),
  contentSize: content.byteLength,
});
await Deno.writeFile("./test.tar", tar.out);

但是,读取tar会触发错误:

error: Uncaught Error: checksum error  
      throw new Error("checksum error");  
        --------^
    at Untar.extract (https://deno.land/std/archive/tar.ts:432:13)  
    at async file:///C:/Users/bela/Desktop/script/test.ts:23:16  

代码:

// read from tar archive
const untar = new Untar(await Deno.open("./test.tar"));
const buf = new Deno.Buffer();
const result = await untar.extract(buf); // <-- this line triggers error
const untarText = new TextDecoder("utf-8").decode(buf.bytes());

我错过了哪里?

tar deno
1个回答
1
投票
const untar = new Untar(await Deno.open("./test.tar", { read: true })); const buf = new Deno.Buffer(); const result = await untar.extract(buf); // <-- this line triggers error const untarText = new TextDecoder("utf-8").decode(buf.bytes()); console.log(untarText);

[tar.out当前为零填充Uint8Array,似乎是标准代码中的错误
© www.soinside.com 2019 - 2024. All rights reserved.