【发布时间】:2015-06-22 19:08:52
【问题描述】:
我正在使用 Atom/Electron 构建一个基于数据的视频可视化应用。每个视频都有一个对应的 CSV 文件,其中包含每个帧的信息。视频时长约100分钟,所以文件数据量很大!
我遇到的问题是加载和解析文件需要几秒钟。大多数时候这不是问题。但是我需要制作部分视频的播放列表,并且每次更改视频时加载整个 CSV 文件不是一个可行的选择。
我一直在寻找文件流选项作为 fast-csv,但我没有设法开始读取文件的任意部分。
编辑:来自 FS 文档。在这种情况下,问题是我如何知道哪个字节对应于文件中我想要的位置?
选项可以包括开始和结束值以读取一系列字节 从文件而不是整个文件。开始和结束都是 包含并从 0 开始。
您认为解决这种情况的更好和最有效的方法是什么?
具体来说:
有没有办法从 CSV 文件的任何部分开始读取流?
您认为还有另一种存储方法可以让我更好地解决这个问题吗?
更新:
最后,我通过将数据以二进制格式存储在文件中来解决这个问题。因为我知道文件有多少列,所以我可以直接从文件段中读取,而不会对性能产生任何影响。
【问题讨论】:
-
csv 中的列宽是否固定? (例如,第 1 列始终为 20 个字符)
-
这个问题可能有用:stackoverflow.com/questions/6156501/…我对节点的了解还不够,无法确定回答,但在我看来,您希望一次在 csv 线上发送.
-
@DevinH。不,但每一列总是一个数字,所以使用某种填充并不难。理想情况下,我宁愿不这样做。我正在考虑索引每行的字节位置。并存储一个包含位置的数组。第一次加载文件时进行一些处理不会有问题。
-
在每次读取时指定缓冲区块?这样你一次只能阅读小块(我不确定,但看起来像我的第一种方法)
-
@Bwaxxio 我认为您误解了这个问题。他似乎试图随机访问文件的一小部分,而不是流式传输整个文件。
标签: javascript node.js file csv electron