[英]NodejS Read/Write Binary Data to/from file
好吧,所以我有一個帶有二進制數據的字符串(“111011 10001 等”),我試圖將它保存到一個文件中,以便他們使用流在另一個文件上讀取它,問題是 stream 正在切割數據off(塊中最后的二進制數被截斷)
這就是我將數據發送到文件的方式(讀取文件,使用 golombRice 編碼器對其進行編碼並將其存儲在文件中,使用數據塊)
const writer = fs.createWriteStream(
`./encodedAndDecoded/encoded${filename}`,
{
encoding: "binary",
}
);
const reader = fs.createReadStream(`./silesia/${filename}`, {
encoding: "base64",
});
await new Promise((resolve, reject) => {
reader.on("data", (chunk) => {
writer.write(Buffer.from(golombRiceEncoding(chunk, 3)));
});
reader.on("end", () => {
writer.end();
resolve();
});
});
這就是我閱讀它的方式(讀取編碼文件,使用 golombRice 編碼器對其進行解碼並將其存儲在文件中,使用數據塊,問題是這些塊沒有完整的二進制數據,因為stream 削減它)
const writer = fs.createWriteStream(`./encodedAndDecoded/decoded${filename}`);
const reader = fs.createReadStream(`./encodedAndDecoded/encoded${filename}`, {
encoding: "binary",
});
await new Promise((resolve, reject) => {
reader.on("data", (chunk) => {
writer.write(Buffer.from(golombRiceDecoding(chunk, 3), "base64"));
});
reader.on("end", () => {
writer.end();
resolve();
});
});
想知道是否有辦法讓它使用流讀取數據,但不切割二進制數? 我不介意它是否一次讀取 x,問題是當它切割二進制數時,解碼時使數據無效。 謝謝
您嘗試解碼的特定壓縮方案看起來像是可變字節方案。 因此,如果塊邊界與可變字節壓縮塊的大小不完全一致,您的解壓縮庫將失敗。
要即時解碼此類內容,您必須在解碼器中直接構建邏輯,以識別何時只有部分數據,然后緩沖該數據以將其與到達的下一個數據塊組合。 因為壓縮是可變字節的,所以如果不作為解壓縮邏輯的一部分,就無法知道正確的邊界在哪里。
或者,您可以放棄進行即時解碼,將所有壓縮數據緩沖到 memory 中,然后在擁有所有數據后立即全部解壓縮(這樣您就不必擔心任何塊邊界)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.