プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

resourceからテキストファイルをロードする方法

以前アプリを作っているときに固定文言を管理するクラスを作っていたのですが、結構管理が面倒でした。そこでJavaのResourceBundleのようなクラスを作るためにテキストファイルのロードを試したのでメモ。


res/sample.txt というファイルを作成して下記コードを実行すればそのファイルをロードできます(Sアプリの場合はresフォルダをビルドパスに追加する必要があるので注意)。

String file = "sample.txt";
byte[] resource;
InputStream in = null;
ByteArrayOutputStream out = null;
byte[] w = new byte[10240];

try {
  //DoJa
  in = Connector.openInputStream ("resource:///"+file);

  //MIDP
  //in = getClass().getResourceAsStream("/"+file);

  out = new ByteArrayOutputStream();
  while (true) {
    int size = in.read(w);
    if (size <= 0) break;
    out.write(w, 0, size);
  }
  resource = out.toByteArray();

}catch(Exception e){      
}finally{
  try {
    if(out != null) out.close();
    if(in != null) in.close();
  } catch (IOException e) {
  }
}

利用方法はHTTPなどと同じで、DoJaとMIDPで異なる箇所もInputStreamの生成箇所のみです。あとはテキストを処理するロジック作れば完成。