使用Node.js读取文件“无效编码”错误

托林·科瓦奇

我正在使用Node.js创建一个应用程序,并且试图读取一个名为“ datalog.txt”的文件。我使用“追加”功能写入文件:

//Appends buffer data to a given file
function append(filename, buffer) {
  let fd = fs.openSync(filename, 'a+');

  fs.writeSync(fd, str2ab(buffer));

  fs.closeSync(fd);
}

//Converts string to buffer
function str2ab(str) {
  var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
  var bufView = new Uint16Array(buf);
  for (var i=0, strLen=str.length; i < strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}

append("datalog.txt","12345");

这看起来很棒。但是,现在我想fs.readFileSync用来读取文件。我尝试使用此:

const data = fs.readFileSync('datalog.txt', 'utf16le');

我将编码参数更改为Node文档中列出的所有编码类型,但所有这些均导致此错误:

TypeError: Argument at index 2 is invalid: Invalid encoding 

我要做的就是能够从“ datalog.txt”中读取数据。任何帮助将不胜感激!

注意:一旦我可以读取文件的数据,我希望能够获得文件所有行的列表。

托林·科瓦奇

好的,经过数小时的故障排除后,查看了文档后,我找到了一种解决方法。

try {
    // get metadata on the file (we need the file size)
    let fileData = fs.statSync("datalog.txt");
    // create ArrayBuffer to hold the file contents
    let dataBuffer = new ArrayBuffer(fileData["size"]);
    // read the contents of the file into the ArrayBuffer
    fs.readSync(fs.openSync("datalog.txt", 'r'), dataBuffer, 0, fileData["size"], 0);
    // convert the ArrayBuffer into a string
    let data = String.fromCharCode.apply(null, new Uint16Array(dataBuffer));
    // split the contents into lines
    let dataLines = data.split(/\r?\n/);
    // print out each line
    dataLines.forEach((line) => {
        console.log(line);
    });
} catch (err) {
    console.error(err);
}

希望它可以帮助遇到同样问题的其他人!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Windows上的utf8编码文件的node.js读取文件错误

来自分类Dev

从node.js中的URL读取XML文件:编码问题

来自分类Dev

使用node.js读取Excel文件

来自分类Dev

无法使用Node.js读取文件

来自分类Dev

使用Node.js读取文件

来自分类Dev

无法使用Node.js读取文件

来自分类Dev

使用node.js读取文件

来自分类Dev

node.js编码错误

来自分类Dev

node.js编码错误

来自分类Dev

在Node.js中模拟特定读取文件错误

来自分类Dev

使用Node.js,我得到“错误:EISDIR,已读取”

来自分类Dev

使用Node js运行.js文件时发生错误“ TypeError:无法读取未定义的属性'render'”

来自分类Dev

Node.js使用fs.readFileSync读取大文件

来自分类Dev

如何使用node.js从网络同步读取文件

来自分类Dev

无法使用fs Node.js读取文件

来自分类Dev

如何使用Node.js读取.pdf文件的内容?

来自分类Dev

使用 node.js xpath xmldom 读取 XML 文件

来自分类Dev

使用Node.js编码重音字符

来自分类Dev

使用Node.js编码重音字符

来自分类Dev

错误:使用Node.js写入文件时出现EACCES

来自分类Dev

当读取为 readAsArrayBuffer 时,Filereader 使用正确的编码读取文件

来自分类Dev

如何使用Node.js从json文件读取数据并将读取的数据显示为html?

来自分类Dev

如何在node.js中使用.proto文件解码编码的协议缓冲区数据

来自分类Dev

使用urllib读取url时出现编码错误

来自分类Dev

错误:使用Node.js连接到mysql服务器时,读取ECONNRESET

来自分类常见问题

在Node.js中读取文件

来自分类Dev

在Node.js中读取XML文件

来自分类Dev

Node.js读取并执行Ruby文件?

来自分类Dev

从node.js中的文件读取