没有行分隔符的高效文本加载

时间:2015-11-20 06:26:03

标签: java android text

所以我有一个相当大的(4mb)txt与单语词典的数据。因为单词的解释被分成多行,所以我无法逐行读取。另一方面,我有“###”分隔符,我可以使用。

我的问题是:在java / android中将此文本加载到地图中的最有效方法是什么?

1 个答案:

答案 0 :(得分:0)

将文件加载到单个字符串并在其上使用split("###")方法。它为您提供由分隔符拆分的字符串数组。 4 Mb可以立即将其加载到内存中。

byte[] encoded = Files.readAllBytes(Paths.get(filePath));
String fileContents = new String(encoded, encoding);
String[] lines = fileContents.split("###");

更新:不确定您是否可以使用该代码在Android上读取文件 - 它适用于Java SE 7.在Android上可以使用如下代码:

FileInputStream fis;
fis = openFileInput(filePath);
StringBuffer fileContent = new StringBuffer("");

byte[] buffer = new byte[1024];

while ((n = fis.read(buffer)) != -1) 
{ 
  fileContent.append(new String(buffer, 0, n)); 
}
String[] lines = fileContent.toString().split("###");