2016-12-13 224 views
0

我是新来的这个JavaScript,所以问一个简单的问题。 我正在使用Node.js来读取以下格式的文件。如何读取文件并避免'EOF'?

NAME : noname 
TYPE : filetype 
lines : 15000 
1 24 12 
2 12 33 
3 63 00 
4 .. .. 
.............. 
150000 16 91 
EOF 
'an empty line here' 

我的代码是

var fs = require('fs'); 
if (fs.existsSync(filepath)) 
{ 
    var data_array = fs.readFileSync(filepath).toString().split("\n"); 

    //to check if it is reading correctly 
    console.log(data_array[0]); 
    console.log(data_array[1]); 
    console.log(data_array[2]); 
    console.log(data_array.length.toString()); 

} 

,但我意识到,它也读“EOF”线,之后的空行。 我希望它在到达'EOF'时停止。

如何做到这一点?

+0

您可以简单地删除数组中最后一个元素。但我不会去做,因为当你读200个文件时,可能有40个文件没有最后一个空行。保持简单而不是太严格。只是忽略空行。 – DanFromGermany

+0

@DanFromGermany它也读'EOF'。是的,从数组中删除最后2行是最简单的,但我想知道是否有一个简单的解决方案来避免这些最后2行。 – arslan

+0

最好的方法是构建您的脚本,只使用它可以使用的信息并忽略其余部分。 – DanFromGermany

回答

0

如果“EOF”对于您的业务逻辑来说很重要,并且之后需要忽略“任何事情”,那么您需要自定义代码才能实现此目的。但是,文件(以及节点中的文件读取器代码)将自动检测文件中可用的EOF标记,而无需明确添加。如果这样就足够了,你可以把所有东西都拿出来,包括EOF,然后按照标准程序。

它可能看起来微不足道和简单,但基于您自己的关于Javascript中的经验级别的警告以这种方式回答。

希望这会有所帮助。

+0

我认为他有一个字符串“EOF”,而不是人们可能期望的真实EOF符号。因为如果它真的是一个真正的EOF,那么之后就不会有空行。 – DanFromGermany