readFileSync 不适用于我。将输入设置为字符串后,我尝试打印输入,但很奇怪
readFileSync won't work with me. I tried to print the input after setting it to string but was weird
我是 Node.js 的新手,我正在尝试独自学习。我有一个简单的任务来执行以下操作:
- 读取文件(提供购买第一个命令行参数)。
-打印文件中的行数。
-我正在使用 readFileSync 方法。
代码是 运行 但输出很奇怪。我尝试打印每条语句,我认为问题出在数据读取上。谁能告诉我哪里错了?
function numLines(){
var fs = require('fs');
var num = 0;
var contents = fs.readFileSync(process.argv[0]);
console.log(contents.toString());
return num;
}
忽略return声明,请只关注readFileSync。打印内容时,打印出来的文字全是奇怪的字符,好像读错了一样
如果没有 encoding
,readFile
和 readFileSync
会给你一个原始缓冲区,你必须自己用正确的编码来解释(而不是仅仅调用 toString
它)。来自文档:
If no encoding is specified, then the raw buffer is returned.
因此,要么在 readFileSync
调用中指定文件的编码,要么使用缓冲区方法使用给定的编码读取它。 Buffer
docs讲的是Node支持的编码,比如utf8
.
例如,如果你的文件是 UTF-8,你会使用:
function numLines(){
var fs = require('fs');
var num = 0;
var contents = fs.readFileSync(process.argv[0], {encoding: 'utf8'});
console.log(contents.toString());
return num;
}
var contents = fs.readFileSync(process.argv[0]);
process.argv[0]
实际上不是传递给脚本的第一个参数。这是命令node
。第二项是您的脚本的文件名,它被传递给 node
,假设您将其称为 node myscript.js somefile.txt
。您需要获得 third 项目:process.argv[2]
我是 Node.js 的新手,我正在尝试独自学习。我有一个简单的任务来执行以下操作: - 读取文件(提供购买第一个命令行参数)。 -打印文件中的行数。 -我正在使用 readFileSync 方法。
代码是 运行 但输出很奇怪。我尝试打印每条语句,我认为问题出在数据读取上。谁能告诉我哪里错了?
function numLines(){
var fs = require('fs');
var num = 0;
var contents = fs.readFileSync(process.argv[0]);
console.log(contents.toString());
return num;
}
忽略return声明,请只关注readFileSync。打印内容时,打印出来的文字全是奇怪的字符,好像读错了一样
如果没有 encoding
,readFile
和 readFileSync
会给你一个原始缓冲区,你必须自己用正确的编码来解释(而不是仅仅调用 toString
它)。来自文档:
If no encoding is specified, then the raw buffer is returned.
因此,要么在 readFileSync
调用中指定文件的编码,要么使用缓冲区方法使用给定的编码读取它。 Buffer
docs讲的是Node支持的编码,比如utf8
.
例如,如果你的文件是 UTF-8,你会使用:
function numLines(){
var fs = require('fs');
var num = 0;
var contents = fs.readFileSync(process.argv[0], {encoding: 'utf8'});
console.log(contents.toString());
return num;
}
var contents = fs.readFileSync(process.argv[0]);
process.argv[0]
实际上不是传递给脚本的第一个参数。这是命令node
。第二项是您的脚本的文件名,它被传递给 node
,假设您将其称为 node myscript.js somefile.txt
。您需要获得 third 项目:process.argv[2]