gpt4 book ai didi

Javascript 使用 File.Reader() 逐行读取

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

This question is close 但还不够接近。

我的 HTML5 应用程序读取 CSV 文件(尽管它也适用于文本)并在屏幕上显示一些数据。

我遇到的问题是 CSV 文件可能很大(文件大小限制为 1GB)。好消息是,我只需随时显示 CSV 文件中的一些数据。

想法有点像(伪代码)

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

我需要去掉前两行,还要考虑如何处理以 # 开头的行(因此我需要一次读完一行)

那么,除了将批处理加载到内存中,我是否可以选择一次读取一行?

最佳答案

目前还没有readLine() 方法可以做到这一点。然而,一些想法需要探索:

  • 从 blob 中读取会触发 progress 事件。虽然 the specification 不需要它,引擎可能过早地填充类似于 XMLHttpRequest 的 .result 属性。
  • Streams API 起草文件读取器的流式.read(size) 方法。不过,我认为它还没有在任何地方实现。
  • Blob 确实有一个slice method它返回一个包含部分原始数据的新 Blob。规范和操作的同步性质表明这是通过引用完成的,而不是复制,并且应该非常高效。这将允许您逐 block 读取巨大的文件。

诚然,这些方法都不会在行尾自动停止。您将需要手动缓冲 block ,将它们分成几行,并在完成后将它们移出。此外,这些操作是针对字节而不是字符进行的,因此可能存在需要处理的多字节字符的编码问题。

另请参阅:Reading line-by-line file in JavaScript on client side

关于Javascript 使用 File.Reader() 逐行读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26056540/

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