使用File.Reader()逐行读取的Javascript
Javascript using File.Reader() to read line by line
这个问题很接近,但还不够接近。
我的HTML5应用程序读取CSV文件(尽管它也适用于文本)并在屏幕上显示一些数据。
我遇到的问题是CSV文件可能很大(文件大小限制为1GB)。好消息是,我只需要在任何时候显示CSV文件中的一些数据。
这个想法有点像(psudeo代码)
var content;
var reader = OpenReader(myCsvFile)
var line = 0;
while (reader.hasLinesRemaning)
if (line % 10 == 1)
content = currentLine;
Loop to next line
有足够多的关于如何读取CSV文件的文章,我正在使用
function openCSVFile(csvFileName){
var r = new FileReader();
r.onload = function(e) {
var contents = e.target.result;
var s = "";
};
r.readAsText(csvFileName);
}
但是,我看不出如何在Javascript中一次读取一行,或者即使这是可能的。
我的CSV数据看起来像
Some detail: date, ,
More detail: time, ,
val1, val2
val11, val12
#val11, val12
val21, val22
我需要去掉前2行,还需要考虑如何处理以#开头的行(因此我需要一次通读一行)
所以,除了把很多东西加载到内存中,我有什么选择一次读一行吗?
到目前为止,还没有readLine()
方法可以执行此操作。然而,一些想法需要探索:
- 从blob读取确实会激发
progress
事件。虽然规范不需要它,但引擎可能会像XMLHttpRequest一样过早地填充.result
属性 - Streams API为文件读取器起草流式
.read(size)
方法。不过,我认为它还没有在任何地方实现 - Blob确实有一个
slice
方法,该方法返回一个包含部分原始数据的新Blob。规范和操作的同步性质表明,这是通过引用而不是复制来完成的,并且应该具有很高的性能。这将允许您逐块读取巨大的文件
诚然,这些方法中没有一种会在行尾自动停止。您需要手动缓冲块,将它们分解成行,并在它们完成后将它们移出。此外,这些操作是针对字节的,而不是针对字符的,因此可能需要处理多字节字符的编码问题。
另请参阅:在客户端上以JavaScript逐行读取文件
相关文章:
- 有什么工具可以轻松读取javascript代码吗
- 如何从java中的URL读取JavaScript响应
- 如何从ajax成功回调函数中读取javascript变量
- 正在读取Javascript中的会话var
- 如何使用Selenium读取javascript变量
- 可以'使用IE11时,不要读取Javascript中的cookie
- 如何在Java程序中读取JavaScript输出文本
- 读取Javascript中的文件
- 无法从PHP读取Javascript responseXML
- 使用iTextSharp从pdf中读取javascript
- 正在读取javascript中的多维数组
- PHP读取Javascript数组
- 无法通过本地主机读取javascript文件
- 通过Apache Pig UDF读取javascript中的文件
- 读取 Javascript 中的错误值
- 读取 JavaScript 中包含 32 位浮点数的二进制文件
- 从网站上实时读取 JavaScript 变量
- 无法读取 JavaScript 中的对象属性
- 未捕获的类型错误:无法读取 javascript 中未定义的属性“PhotoSwipe”
- 读取 Javascript 本地存储以填充自动完成