我正在开发这段代码,在用户选择一个目录后,它会显示该位置中包含的文件及其详细信息(名称、类型、大小…)的表格。
一个目录可能包含很多文件。
我成功地做到了这一点。但是,我的问题是我想显示每个文件中的行数。我可以使用此 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;
上面的代码按预期工作,它给了我想要的东西,但如果所选目录中有这么多文件,它可能是一个繁重的过程!
问题: 有没有办法在不读取文本文件的情况下获取文本文件中的行数?
问候!
原文由 Hamza Abdaoui 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果不阅读文件,就无法计算文件中的行数。您的代码运行的操作系统不会将行数存储为某种元数据。他们甚至一般都不区分二进制文件和文本文件!您只需要阅读文件并计算换行符。
但是,如果您的文件有很多行,您可能会比现在更快地执行此操作。
这行代码是我担心的:
在这里调用
split
会创建大量内存分配,文件中的每一行一个。我的直觉是直接在
for
循环中计算换行符会更快:这计算了没有任何内存分配的换行符,大多数 JavaScript 引擎应该能很好地优化这段代码。
根据您想要解释的方式,您可能还想根据文件是否以换行符结尾来稍微调整最终计数。但是不要在循环内这样做,然后再做。