gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:30:20 25 4
gpt4 key购买 nike

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

一个目录可能包含很多文件。

我成功地做到了这一点。但是,我的问题是我想显示每个文件中的行数。我可以使用此 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;

在这里调用 split 会创建大量内存分配,文件中的每一行一个。

我的直觉是直接在 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 引擎应该会很好地优化这段代码。

您可能还想根据文件是否以换行符结尾来稍微调整最终计数,具体取决于您想要如何解释它。但不要在循环内执行此操作,然后再执行。

关于javascript - 如何在不打开文本文件的情况下获取文本文件中的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45630235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com