This question is close 但不够接近。
我的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行,并考虑如何处理以#开头的行(因此我需要一次读取行)
因此,除了将该批次加载到内存中之外,我是否有任何选项可以一次读取行?
答案 0 :(得分:5)
截至目前,没有readLine()
方法可以执行此操作。但是,有些想法值得探讨:
progress
个事件。虽然the specification不需要它,但引擎可能过早填充.result
属性,类似于XMLHttpRequest。.read(size)
方法。不过,我不认为它已经在任何地方实施过。slice
method,它返回一个包含部分原始数据的新Blob。操作的规范和同步性质表明这是通过引用完成的,而不是复制,并且应该是非常高效的。这将允许您读取大块文件块。不可否认,这些方法都没有在行结束时自动停止。您需要手动缓冲块,将它们分成几行并在完成后将它们移出。此外,这些操作正在处理字节,而不是字符,因此可能存在需要处理的多字节字符的编码问题。