我正在开发这个代码,在用户选择目录后,它会显示该位置包含的文件的表格及其详细信息(名称,类型,大小……).
目录可能包含许多文件.
我成功实现了这一目标.但是,我的问题是我想显示每个文件中的行数.我可以使用此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;
上面的代码按预期工作,它给了我想要的东西,但如果所选目录中有这么多文件,它可能会很重要!
问候!
解决方法
如果不读取文件中的行数,则无法计算.运行代码的操作系统不会将行数存储为某种元数据.它们通常甚至不区分二进制文件和文本文件!您只需阅读文件并计算换行符即可.
但是,如果文件中包含大量行,则可以比现在更快地执行此操作.
这行代码是我担心的:
nbLines = (file.split("\n")).length;
我的预感是,在for循环中直接计算换行符会更快:
function lineCount( text ) { var nLines = 0; for( var i = 0,n = text.length; i < n; ++i ) { if( text[i] === '\n' ) { ++nLines; } } return nLines; }
这会对没有任何内存分配的换行符进行计数,并且大多数JavaScript引擎都应该很好地优化此代码.
根据您想要解释的方式,您可能还希望根据文件是否以换行结束来稍微调整最终计数.但是不要在循环中做到这一点,之后再做.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。