JS:电子在渲染过程中使用fs.readSync

时间:2019-01-02 09:26:12

标签: javascript electron fs

在渲染过程中使用fs.readSync(),并且buffer的元素始终为0。 使用fs.read()将获得正确的结果。

const electron = window.require('electron');
const { remote } = electron;
const fs = remote.require('fs');

const fd = fs.openSync(localPath, 'r');
const fileStat = fs.fstatSync(fd);

const { size: fileSize } = fileStat;
const dataBuffer = Buffer.alloc(fileSize);
const readSize = 1024;
for(let i = 0; i < fileSize; i += readSize) {
  fs.readSync(fd, dataBuffer, i, Math.min(fileSize - i, readSize), null);
  console.log(dataBuffer);
}

1 个答案:

答案 0 :(得分:0)

返回0可能意味着同步操作因remote而失败。您可能会在主线程中捕获异常。

BTW:在nodejs中,同步函数调用将非常慢。这就是为什么所有这些函数都以Sync作为后缀命名的原因。我强烈建议您尽可能在任何地方编写异步代码。