以下 Node 脚本 (wc.js) 返回一个与 Unix 实用程序 wc 不同的值;
fs = require('fs');
//console.log(fs.readFileSync(process.argv[2]).toString().split('\n') );
console.log(fs.readFileSync(process.argv[2]).toString().split('\n').length );
其本身的输出是:
vagrant@precise32:~/stuff$ wc -l wc.js
3 wc.js
vagrant@precise32:~/stuff$ node wc.js wc.js
4
通过打印数组,似乎文件被一个额外的空字符串终止:
vagrant@precise32:~/stuff$ node wc.js wc.js
[ 'fs = require(\'fs\');',
'console.log(fs.readFileSync(process.argv[2]).toString().split(\'\\n\') );',
'//console.log(fs.readFileSync(process.argv[2]).toString().split(\'\\n\').length );',
'' ]
这是预期的行为吗?我在 Node 文档中看不到它的报告。
最佳答案
您确定文件末尾没有尾随换行符吗?
$ node wc.js wc.js
[ 'fs = require(\'fs\');',
'console.log(fs.readFileSync(process.argv[2]).toString().split(\'\\n\') );',
'// console.log(fs.readFileSync(process.argv[2]).toString().split(\'\\n\').length );' ]
您可以使用 .replace(/\n$/, '')
忽略最后一个换行符,我相信这是 wc
的行为。
关于node.js - fs.readFile().toString 以空字符串终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18986026/