learnyounode'我的第一个I/O'示例

kri*_*ara 9 node.js

这个程序困扰着我.此程序的目标是计算文件中的换行数并在命令提示符下输出.然后Learnyounode对文件进行自己的检查,看看他们的答案是否符合你的答案.

所以我从答案开始:

var fs = require('fs');

var filename = process.argv[2];

file = fs.readFileSync(filename);

contents = file.toString();

console.log(contents.split('\n').length - 1);
Run Code Online (Sandbox Code Playgroud)

learnyounode验证此程序是否正确计算新行数.但是,当我将程序更改为以下任何一项时,它不会打印出与learnyounode打印出来相同的数字.

file = fs.readFileSync(C:/Nick/test.txt);
file = fs.readFileSync(test.txt);
Run Code Online (Sandbox Code Playgroud)

nodejs readFileSync不能输入地址并正确读取吗?

最后,该程序应打印出程序中的新行数.为什么每次运行此程序时,正确的程序和learnyounode都打印出与换行符数量不同的数字?

例如,test.txt中的换行符数为3.但是运行此程序每次打印出不同的数字,如45,15,2等.但同时,它被learnyounode验证为正确的程序,因为他们的答案都匹配!到底是怎么回事?

编辑:test.txt看起来像这样

ok
testing
123
Run Code Online (Sandbox Code Playgroud)

Cha*_*shu 4

因此,我在本地计算机上尝试了您的程序,并且您的程序运行良好。我不是 learnyounode 的专家。我刚刚在你提出问题后尝试过,但我想我明白它是如何工作的。因此,以下是您问题的答案:

难道nodejs readFileSync 不应该能够输入地址并正确读取吗?

这个来自nodejs的方法运行良好。您可以尝试打印该文件的内容,您会发现没有问题。

为什么每次运行该程序时,正确的程序和 learnyounode 都会打印出与换行符数量不同的相同数字。

filenamelearnyounode每次都使用不同的输入来运行您的程序。它通过针对同一文件运行自己的正确代码副本来验证程序的输出。

但是当我将程序更改为以下任何一个时,它不会打印出与 learnyounode 打印出的数字相同的数字。

这是因为此时,您的代码正在处理固定文件,而 learnyounode 在每次迭代中仍在处理不同的文件。