Javaのリソースデータ (1)
Javaのリソースデータに関連する事柄を、何回かに分けてメモします。この記事は個人的なメモです。
今回は、リソースデータの取得に使うメソッドの使用法について書きます。
前回: -
次回: id:simply-k:20100719:1279499319
目次: id:simply-k:20100728:1280299110
リソースデータの取得によく使うクラスとメソッド
クラス | メソッド | 戻り値 |
---|---|---|
Class | getResource(String name) | URL |
Class | getResourceAsStream(String name) | InputStream |
ClassLoader | getResource(String name) | URL |
ClassLoader | getResourceAsStream(String name) | InputStream |
リソース名の指定方法 (Classクラスのメソッドを使う場合)
- 条件
- リソース名の指定方法
- /jp/co/foo/bar/resource.txt (絶対指定)
- bar/resource.txt (相対指定)
- 備考
- 相対指定では、先頭に「./」を付けてはいけない。
(Jarファイル化した場合にエラーとなるため。) - 内部的に、ClassLoaderクラスのメソッドが呼ばれる。
その際、リソース名は「jp/co/foo/bar/resource.txt」のように変換される。 - クラスローダは必ずしもシステムクラスローダとは限らないので注意する。
- 相対指定では、先頭に「./」を付けてはいけない。
リソース名の指定方法 (ClassLoaderクラスのメソッドを使う場合)
- 条件
- Classクラスの場合と同じ
- リソース名の指定方法
- jp/co/foo/bar/resource.txt
- 備考
- リソース名の先頭に「/」を付けてはいけない。
- 相対指定はできない。
- クラスローダは必ずしもシステムクラスローダとは限らないので注意する。
URLオブジェクトからInputStreamオブジェクトを取得する手順
URL url = loader.getResource(resourceName); URLConnection connection = url.openConnection(); InputStream is = connection.getInputStream();
InputStreamオブジェクトからデータを取得する例
//プロパティファイル(通常)の場合 InputStream is = Hoge.class.getResourceAsStream(resourceName); Properties props = new Properties(); props.load(is);
//プロパティファイル(XML)の場合 InputStream is = Hoge.class.getResourceAsStream(resourceName); Properties props = new Properties(); props.loadFromXML(is);
//テキストファイルの場合 InputStream is = Hoge.class.getResourceAsStream(resourceName); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String line; while((line = reader.readLine()) != null){ ... }
URLオブジェクトからデータを取得する例
//画像ファイルの場合 (java.awt.Toolkitを使う) URL url = Hoge.class.getResource(resourceName); Image img = Toolkit.getDefaultToolkit().getImage(url);
前回: -
次回: id:simply-k:20100719:1279499319
目次: id:simply-k:20100728:1280299110