繁体   English   中英

在java中读取文本文件

[英]Read text file in java

嘿,我需要在java中读取一个文本文件。 问题是该文件具有以下格式:

Id time1 time2 time3 ...
ID2 time1 time2 time3 ...

我需要能够先读取所有的ID,然后读取所有的时间1,然后是所有的时间2等等。任何人都可以给我一些提示我怎样才能在java中这样做? 效率在这里非常重要,因为这需要为时间而做 - <这是我的问题在此先感谢您的帮助

转置文件。 第1行的Ids,第2行的time1,依此类推。 当然,如果只能进行一次,然后预计会对该文件进行多次读取,这将是有益的。

最简单的方法是逐行读取整个文件行一次 ,当您去解析行-那么你可以很容易得到“所有ID”,其次是“所有的第一次”等。

如果文件太大而无法做到这一点,您可能需要考虑编写一个工具来更改文件结构 - 打开几个文件进行写入(每列一个)然后您可以读取输入行,将输出数据写入每个文件,移动到下一行等。您可以执行此操作一次,然后在需要时读取每个文件。

一种解决方案是解析文件一次,并创建文件中每个ID的位置索引。 然后,您可以根据需要将读数“光标”重新定位到ID。

编辑

如果无法将整个文件内容加载到内存中,则此解决方案很实用。 为了限制物理读数的数量,保留最近读取或使用的id-times组合的LRU缓存可以提高性能。

我们无法逐列读取文件。 将整个文件读入内存( java.nio FileReader )并解析数据结构中的内容(每行上的String#split

Map<String, List<String>>

其中maps键是id(ID,ID2,..),值是包含所有时间值的简单列表。

如果您使用的是Linux / UNIX平台,则可以使用cut命令进行一些预处理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM