我的文件中有1亿条记录JSON
,需要一种有效且最快的方法来从中的JSON
文件读取数组数组java
。
JSON
文件看起来像:
[["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"],...,["XYZ",...,"ABC"],
["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"],...,["XYZ",...,"ABC"],
...
...
...
,["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"]]
我想JSON
逐行读取此文件为:
首先阅读:
["XYZ",...,"ABC"]
然后:
["XYZ",...,"ABC"]
依此类推:’
...
...
...
["XYZ",...,"ABC"]
我如何读取这样的JSON
文件,我知道它看起来并不完全像JSON
文件,但是我需要以另存为JSON的这种格式读取该文件
您可以使用JSON Processing API(JSR
353)
来以流方式处理数据:
import javax.json.Json;
import javax.json.stream.JsonParser;
...
String dataPath = "data.json";
try(JsonParser parser = Json.createParser(new FileReader(dataPath))) {
List<String> row = new ArrayList<>();
while(parser.hasNext()) {
JsonParser.Event event = parser.next();
switch(event) {
case START_ARRAY:
continue;
case VALUE_STRING:
row.add(parser.getString());
break;
case END_ARRAY:
if(!row.isEmpty()) {
//Do something with the current row of data
System.out.println(row);
//Reset it (prepare for the new row)
row.clear();
}
break;
default:
throw new IllegalStateException("Unexpected JSON event: " + event);
}
}
}
问题内容: 我一直在寻找最快的方法来用有限的内存(大约64MB)在Java中再次读写大文件(0.5-1 GB),这是最快的方法。文件中的每一行代表一条记录,因此我需要逐行获取它们。该文件是普通文本文件。 我尝试了BufferedReader和BufferedWriter,但这似乎不是最好的选择。读写大小为0.5 GB的文件大约需要35秒钟,仅进行读写操作而不进行任何处理。我认为这里是写作的瓶颈,因
代码将是特定于平台的windows OS 与事实,我正在写一个特定的当前CPU等'… *别介意它不是多平台的。 怎样才是更有效的方法? 编辑: 我想更新这个问题,因为我想解决效率问题:最有效的方法可以追溯到每行扫描文件的细节,是否是逐个字符的唯一方法,如何避免在每个字符上调用函数...任何可以最大限度地提高每行循环性能的东西,这意味着有效地获得一行的定义...
我需要从全球网格中提取特定节点集的数据,这些节点由纬度/经度坐标给出(大约5000-10000)。这些数据是水力参数的时间序列,例如波高。 全球数据集是巨大的,所以它被分成许多NetCDF文件。每个NetCDF文件大约5GB,包含整个全球网格的数据,但只针对一个变量(例如波高)和一年(例如2020年)。假设我想在某个位置提取6个变量的完整时间序列(42年),我需要提取数据形式为6x42=252个N
问题内容: 什么是我可以逐行读取每行包含两个String的最快方法?输入文件示例为: 即使在字符串之间有空格,例如,“按行”,每行上总是有两组字符串 目前我正在使用 使用标准的JAVA API是否足够有效或有更有效的方法(请没有外部库)感谢您的帮助! 问题答案: 这取决于您说“有效”时的意思。从性能的角度来看,这是可以的。如果您询问代码的样式和大小,我几乎会做一个小小的修正: 为了从STDIN中读
本文向大家介绍C#逐行读取文件的方法,包括了C#逐行读取文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#逐行读取文件的方法。分享给大家供大家参考。具体如下: 这里使用C#逐行读取文件,对于大文件的读取非常有用。 希望本文所述对大家的C#程序设计有所帮助。
问题内容: 我需要使用Java逐行读取大约5-6 GB的大型文本文件。 我如何快速做到这一点? 问题答案: 常见的模式是使用 如果你假设没有字符编码,则可以更快地读取数据。例如ASCII-7,但差别不大。你处理数据的时间很可能会花费更长的时间。 一种不太常用的模式,可以避免line泄漏的范围。 在Java 8中,你可以执行