用node.js从文件中读取

这是我的文本文件 –

15,13,12 10 10 

这里是.js文件

 var fs = require("fs"); var data = fs.readFileSync("someNumbers.txt", "utf8"); for(var i=0; i<data.length; i++){ console.log(i + ": " + data[i] + ": " + typeof data[i]); } 

最后这里是输出:

 0: 1: string 1: 5: string 2: ,: string 3: 1: string 4: 3: string 5: ,: string 6: 1: string 7: 2: string 8: ,: string : string 10: : string 11: 1: string 12: 0: string : string 14: : string 15: 1: string 16: 0: string 

我不明白我到达9后输出的情况。 我将很感激一个解释。 杰拉德

当您尝试从string中的原始文件中包含回车符和/或换行符,然后将该string发送到console.log()时,可能会遇到问题。 改变你的代码,把hex值,而不是实际值,你的问题应该清除:

 var fs = require("fs"); var data = fs.readFileSync("someNumbers.txt", "utf8"); for(var i=0; i<data.length; i++){ console.log(i + ": " + data.charCodeAt(i).toString(16). + ": " + typeof data[i]); } 

或者,跳过任何不可打印的字符:

 var fs = require("fs"); var data = fs.readFileSync("someNumbers.txt", "utf8"); for (var i=0; i<data.length; i++){ var ch = data.charCodeAt(i); if (ch > 32 && ch <= 127) { console.log(i + ": " + ch + ": " + typeof ch); } } 

注意,当你读取这个文件并告诉它把它解释为utf8的时候,你已经做了这样的事情,那么这个数据中的每个项目的typeof将被视为一个string,无论它是否是真的。 你已经告诉Javascript使它成为一个string。

它读取行末(新行)字符,不能显示。 这个字符用console.log相应输出行来console.log