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 байт.

Что мне нужно сделать, чтобы успешно записать байты в файл?

0 ответов

Другие вопросы по тегам