Androidで280KB程度のテキストファイルを高速に読む必要があり、ベンチマークを取ったのでメモっておきます。
バイナリとして読み込んで、文字列に変換する方法(1):
public static String readTextFromFileAll(String path) throws IOException {
File f = new File(path);
byte[] data = new byte[(int)f.length()];
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(f));
bis.read(data);
bis.close();
String fs = new String(data, "utf-8");
return fs;
}
一行ずつ読み込む方法(2):
public static String readTextFromFileB(String path) throws IOException {
File fi = new File(path);
BufferedReader b_reader = new BufferedReader(new InputStreamReader(
new FileInputStream(fi),"UTF-8"));
StringBuilder sb = new StringBuilder();
String tmp;
while((tmp = b_reader.readLine())!=null){
sb.append(tmp);
sb.append('\n');
}
return sb.toString();
}
これを1000回繰り返して読み込みます。
| 1 | 1348ms |
| 2 | 3008ms |
以上、一行ずつ読むより、一度全部をメモリに載せてしまった方が速いという結論でした。