【发布时间】:2017-09-01 09:09:22
【问题描述】:
这是为了更快地读取文件而不是写入它。 我有一个 150MB 的文件,里面有一个 JSON 对象。我目前使用以下代码阅读:
String filename ="/tmp/fileToRead";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename), Charset.forName("UTF-8")));
decompressedString = reader.readLine();
reader.close();
JSONObject obj = new JSONObject(decompressedString);
JSONArray profileData = obj.getJSONObject("profileData").getJSONArray("children");
....
这是一个单行文件,因为它是 JSON,所以我不能拆分它(或者至少我认为是这样)。阅读该文件会给我一个OutOfMemory Error 或TLE。该文件的读取时间超过 7 秒,这会导致 TLE,因为整个代码的执行时间不能超过 7 秒。我在 decompressedString = reader.readLine(); 上收到了 OOM。
有没有办法可以减少使用的内存或完全读取所需的时间?
【问题讨论】:
-
这是一个读文件而不是写文件的问题。怎么会是写文件的副本呢?
-
@Rjiuk 关于重复,“读取”(
BuffereadReader)与“写入”不同。 -
不要将文件转换为字符串。使用能够直接从文件加载 JSONObject 的 json 库。
-
另外,如果您想阅读 data,请不要使用
BufferedReader.readLine(),除非您 100% 确定每一行都足够小(小于 4-8 kb)。
标签: java json bufferedreader