在浏览器中,与“fs.readFileSync”等效的是什么?

Bil*_*ill 10 javascript node.js

如果我在 Node 中读取 wasm 文件,fs.readFileSync我会得到我想要的格式的文件,但是当我尝试使用文件阅读器在浏览器中执行完全相同的操作时,我会以某种方式得到错误的格式?

fs.readFileSyncbut 在浏览器中相当于什么?

是否fs.readFileSync将文件视为数组缓冲区或二进制字符串或其他内容?

<input type="file" onchange="_readWasmFile">
Run Code Online (Sandbox Code Playgroud)

和js

_readWasmFile(event) {
  const file = event.target.files[0];
  let reader = new FileReader();
  reader.readAsBinaryString(file);
  reader.onload = () => {
      this.sendWasm = reader.result;
  };
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*ruk 0

在浏览器中使用FileReader时,您基本上有 3 个选项。最接近 Node 的readFileSync()似乎是readAsText()方法;

  const file = event.target.files[0];
  let reader = new FileReader();
  
  //Option 1 
   reader.readAsText(file);
  //Option 2
  reader.readAsBinaryString(file);
  //Option 3
  reader.readAsArrayBuffer(file);
Run Code Online (Sandbox Code Playgroud)

使用readAsText(),您可以指定编码以确保正确读取文件:

reader.readAsText(file, 'utf-8');
Run Code Online (Sandbox Code Playgroud)

Node 的readFileSync()方法还有一个可选属性来指定编码:

const data = fs.readFileSync('./input.txt',
{ encoding: 'utf8', flag: 'r' });
Run Code Online (Sandbox Code Playgroud)