你可以帮我解决以下问题.
目标
在客户端(通过JS和HTML5类在浏览器中)逐行读取文件,而不将整个文件加载到内存中.
脚本
我正在处理网页,它应解析客户端的文件.目前,我正在阅读本文中描述的文件.
HTML:
<input type="file" id="files" name="files[]" />
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$("#files").on('change', function(evt){
// creating FileReader
var reader = new FileReader();
// assigning handler
reader.onloadend = function(evt) {
lines = evt.target.result.split(/\r?\n/);
lines.forEach(function (line) {
parseLine(...);
});
};
// getting File instance
var file = evt.target.files[0];
// start reading
reader.readAsText(file);
}
Run Code Online (Sandbox Code Playgroud)
问题是FileReader立即读取整个文件,这会导致大文件崩溃的选项卡(大小> = 300 MB).使用reader.onprogress不能解决问题,因为它只会增加结果,直到它达到极限.
发明一个轮子
我已经在互联网上做了一些研究,并没有找到任何简单的方法来做到这一点(有很多文章描述了这个确切的功能,但在服务器端为node.js).
作为解决它的唯一方法,我只看到以下内容:
File.split(startByte, endByte)方法)但我最好使用现有的东西来避免熵增长.
我需要用 JavaScript 逐行读取文本文件。
我可能想对每一行做一些事情(例如跳过或修改它)并将该行写入另一个文件。但具体行动超出了这个问题的范围。
有很多类似措辞的问题,但大多数实际上是一步将整个文件读取到内存中,而不是逐行读取。因此这些解决方案不适用于较大的文件。
我试图解析一个文本文件,其中包含一堆测试问题/答案代码多选测试者.
问题和答案都是分开的,所以我需要逐行阅读每个文件,并通过使用html/javascript/jquery以某种方式解析它.
我该怎么做?谢谢!
文本文件的扩展名为.dat,但实际上是一个文本文件.它只是这些格式的来源,有太多不能改变... http://www.mediafire.com/?17bggsa47u4ukmx
我有一个我想阅读的文件(words.txt)。我想将它保存在一个数组中,但它太长,无法包含在文件中,所以我将它放在一个单独的文件中。我可以使用 URL 来获取它,但我也将该文件与 javascript 文件放在同一文件夹中。如果不使用 jQuery 或 Node.js,最简单的方法是什么?