如何在不打开的情况下获取文本文件中的行数?

时间:2017-08-11 08:18:15

标签: javascript optimization filereader

我正在开发此代码,在用户选择目录后,它会显示该位置中包含的文件的表格及其详细信息(名称,类型,大小......)。

目录可能包含大量文件。

我成功实现了这一目标。但是,我的问题是我想显示每个文件中的行数。我可以使用此JavaScript代码获取行数:

var reader = new FileReader();
var textFile = $("#file").get(0).files[0];
reader.readAsText(textFile);
$(reader).on('load', processFile);
/*And in processFile() i use this line to get the number of lines :*/
nbLines = (file.split("\n")).length;

上面的代码按预期工作,它给了我想要的东西,但是如果所选目录中有这么多文件,这可能是一个繁重的过程!

问题:有没有办法在不读取文本文件的情况下获取行数?

问候!

1 个答案:

答案 0 :(得分:2)

没有打开文档就无法知道行数。关于您遇到的性能问题,最有可能来自.split()。 您将文件作为字符串加载到内存中,然后生成与此文件中的行一样多的字符串。 如果一个文件包含1000行代码,则生成的ram用法将是 1个字符串(整个文件) 1000个字符串(每行1个字符串)

我建议使用RegEx进行评估。这是一个例子

onPostExecute()

请注意,根据您的文件,可能需要使用不同的正则表达式。 这肯定会提高性能。