读取Java中的文本文件

| 嘿, 我需要在Java中读取文本文件。问题在于该文件具有以下格式:
Id time1 time2 time3 ...
ID2 time1 time2 time3 ...
我需要能够首先读取所有ID,然后读取所有time1,然后读取所有time2等。 谁能给我一些提示,请问如何在Java中执行此操作?效率在这里很重要,因为这需要花费数千倍的时间-这是我的问题 在此先感谢您的帮助
已邀请:
最简单的方法是逐行读取整个文件,然后在进行过程中解析这些行-然后您可以很容易地获得“所有ID”,然后是“所有第一次”等。 如果文件太大而无法执行此操作,则可能需要考虑编写一种工具来更改文件结构-打开多个文件进行写入(每列一个),然后可以读取输入行,将输出数据写入每个文件,移至下一行等。您可以执行一次,然后在需要时读取每个文件。
转置文件。第1行的ID,第2行的time1,依此类推。当然,如果此操作只能执行一次,然后希望对该文件进行多次读取,则这是有益的。
一种解决方案是将文件解析一次,然后为文件中每个ID的位置创建索引。然后,您可以根据需要将读数\ cursor \重新定位到id。 编辑 如果无法将整个文件内容加载到内存中,则此解决方案很实用。为了限制物理读数的数量,保留最近读取或使用的id-time组合的LRU缓存可以提高性能。
我们无法逐列读取文件。将整个文件读取到内存中(
java.nio
中的
FileReader
),然后解析数据结构中的内容(每行
String#split
Map<String, List<String>>
其中maps键是id(ID,ID2,..),而值是包含所有时间值的简单列表。
如果您使用的是Linux / UNIX平台,则可以使用
cut
命令进行一些预处理

要回复问题请先登录注册