Я хотел бы прочитать и записать в большой файл (хранящийся в файловой системе пользователя), используя браузер JavaScript, не загружая весь файл в ОЗУ (он слишком большой, чтобы вписаться в ОЗУ). У меня уже есть код, который позволяет мне прочитать раздел файла без загрузки файла в ОЗУ, но я не могу найти, как написать в файл.class DiskAdapter {
file;
constructor(file) {
this.file = file;
}
async read(address, len) {
let diskFile = this.file;
return new Promise((resolve) => {
let reader = new FileReader();
reader.onload = function() {
resolve(reader.result);
};
let blob = diskFile.slice(address, address + len);
reader.readAsArrayBuffer(blob);
});
}
async write(address, len, data) {
// what goes here?
}
}
document.getElementById("diskImage").addEventListener('change', (changeEvent) => {
let diskFile = changeEvent.target.files[0];
let diskAdapter = new DiskAdapter(diskFile);
console.log(await diskAdapter.read(0, 512)); // read MBR of disk image
});
< /code>
Моя цель состоит в том, чтобы иметь изображение диска (файл .iso или .img), которое можно загрузить в виртуализированной ОС в браузере. Пользователь может затем выполнять задачи в ОС, и изменения будут автоматически сохранены для постоянного хранилища. И я хочу, чтобы изображение диска было легко сменой (пользователь может легко загрузиться из другого ISO или скопировать ISO в другой браузер).
Подробнее здесь: https://stackoverflow.com/questions/797 ... e-into-ram