FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Applet »【Applet】【Java】jar 内のリソースを取得する

【Applet】【Java】jar 内のリソースを取得する  


前回の続き
関数内で使っている getJarFileURL() は前回の関数をそのまま使う。

//ファイルパスから jar 内のリソース URL を作成する
public static final String toJarURL(String fileName, Object context) {
final URL url = getJarFileURL(context); //jar の url を取得
if (url == null) {
return null; //失敗
}
return "jar:" + url.toString() + "!/" + fileName; //JAR URL 構文にするだけ
}

//メインでは
String resFilePath = "res/data/sample.txt";
String jarUrl = toJarURL(resFilePath , this);
System.out.println("jarUrl = " + jarUrl);
//入力ストリームを開く
URL url = new URL(jarUrl);
InputStream is = url.openConnection().getInputStream();
・・・(以下略=リソースごとの読み込み処理)・・・

引数 context は jar 内の .class なら何でも良いが、起動した Applet が分かり易い。Android ではリソース読み込みに Context を引数によく使うので、名前を合わせただけ。

また、jar 内のファイル構成によっては、この関数を使う必要はない。例えば起動クラスがルートにある場合は、ClassLoader の getResource() を使えばリソースを読み込める。しかしどうやら getResource() は起動クラスから、同・下位階層しか上手く取得できないらしい。Android のようにパッケージ名などで、深い階層に起動クラスがあるときには、この getJarFileURL(), toJarURL() を利用した方が良いだろう。このJAR URL は絶対パスみたいなものなので、リソースがどこにあっても読み込めるという利点がある。

(参考) JAR URL 構文

■Android の起動クラスとリソース配置関係
com/example/text/MainActivity.class  ←起動クラス
res/drawable-XXX/~ ←リソース(Context.getResources() で読める)
assets/~ ←リソース(AssetManager で読める)

■Applet の起動クラスとリソース配置関係(起動クラスがルート)
MainApplet.class  ←起動クラス(ここなら ClassLoader.getResource() で読める)
res/~ ←リソース(ルートでも良い)

■Applet の起動クラスとリソース配置関係(起動クラスが深い階層)
com/example/text/MainApplet.class  ←起動クラス(ここだと res が上位階層になり、上手く読めない)
res/~ ←リソース(ルートでも良い)

まぁ、Applet はすべてをルートに置いても問題なく動くけどね。または jar コマンドを使って、リソースを同・下位階層に置くとか。
ただ、Eclipse で開発する分には階層対応で作った方が、そのままアーカイブにできるし楽なんだよね。その辺はご自由に。


(関連記事)
【Applet】jar 内リソースからテキストファイルを読み込む
【Apple/汎用】URL経由でWebサーバ上のテキストファイルを読み込む
【汎用】ストリームからテキストファイルを読み込む(ストリームから読み込み、テキストエンコードして返す)
【汎用】ローカルシステム(Windows 等)から、テキストファイルを読み込む
【Android】res/raw リソースフォルダからテキストファイルを読み込む
【Android】assets フォルダからテキストファイルを読み込む
【Android】内部ストレージからテキストファイルを読み込む
【Android】内部ストレージにテキストファイルを保存する
【Android】SDカードからテキストファイルを読み込む
【Android】SDカードにテキストファイルを保存する
【Android】【Applet】【Java】テキストファイルの読み込み・保存 まとめ
【Android】Preference 機能を使ってデータを読み込み・保存する



関連記事
スポンサーサイト



category: Applet

thread: プログラミング

janre: コンピュータ

tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/115-7b2ede18
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR