BrowserFS не записывает данные в файл?
Я пытаюсь записать буфер в файл в localStorage, используя BrowserFS.
Это упрощенная версия кода, который я выполняю:
// Simple function to create a buffer that is filled with value
function createFilledBuffer(size, value) {
const b = Buffer.alloc(size)
b.fill(value)
return b
}
// Configure localStorage FS instance
BrowserFS.configure({
fs: "LocalStorage"
}, function (e) {
if (e) {
console.error('BrowserFS error:', e);
return;
}
// Get BrowserFS's fs module
const fs = BrowserFS.BFSRequire('fs');
const fileName = '/demo.txt';
fs.exists(self.fileName, async (exists) => {
let file;
// Open the file
if (!exists) {
file = fs.openSync(self.fileName, 'w+')
} else {
file = fs.openSync(self.fileName, 'r+')
}
// Write to file -> here is the problem?
// Fill first two "sectors" of the file with 0s
const sector = 4096;
// Write first sector
const bw1 = fs.writeSync(file, createFilledBuffer(sector, 0), 0, sector, 0)
// Write second sector
const bw2 = fs.writeSync(file, createFilledBuffer(sector, 0), 0, sector, sector)
console.log('Bytes written to file: ', bw1, bw2)
});
});
Вывод в консоли: Bytes written to file: 4096 4096
, предполагая, что он успешно записал данные, но когда я пытаюсь получить размер файла /demo.txt, используя fs.stat
, это все еще 0 байтов.
Позже в моем коде я также пытаюсь записать буфер с реальными данными (не только 0) в файл в определенных местах, например:
const buffer = ...;
const bytesWritten = fs.writeSync(file, buffer, 0, buffer.length, 7 * sector)
который также скажет мне, что он написал buffer.length
байт (=481), но, глядя на fs.stat, файл все еще содержит 0 байт.
Что мне нужно сделать, чтобы успешно записать байты в файл?