• ベストアンサー

内部リソースファイルを取得する際のファイル名の記述方法

 ファイルを開く際の、  フォルダ構造は以下のようになっています。 MainPanel.java      base   - Chara.java      Resource - charachip - image.gif ―――Chara.javaにおいて、以下のようなコンストラクタを作成しました。(int xとint yは気にしないでください) public Chara(int x, int y, String filename){  //画像の読み込み  chara_image = ImageIO.read(getClass().getResource(filename)); } ―――MainPanel.javaで、それを呼び出し、 Chara chipfile = new Chara(3,3,"Resource/charachip/hyouga.gif");  と、してみましたが・・・この第三引数の記述、明らかに間違っていますよね・・・。  この読み取る画像ファイルの指定は、どの.javaファイル(.classファイル)のあるディレクトリをカレントディレクトリとして、又、どのような書式で記述すればよいのでしょうか?  一応最終的にはJARファイルにまとめる予定です。但し、今の段階では(当たり前ですが)classファイルの状態です。  環境は、JDK 6 Update1、Eclipse3.2.0です。 ※挿入されているスペースは全て全角です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.1

>この読み取る画像ファイルの指定は、どの.javaファイル(.classファイル)のあるディレクトリをカレントディレクトリとして、又、どのような書式で記述すればよいのでしょうか? そのクラスはどのパッケージに入っていますか? 例えば、jp.hoge.Charaで、このCharaクラスと同じ場所にあるということは、jp.hogeパッケージ内におかれているということですから、リソースを読み込むときは"/jp/hoge/hyouga.gif"となるでしょう。

noname#82539
質問者

お礼

 ご回答ありがとうございます。ルートディレクトリを一番上にするのですね。

その他の回答 (1)

  • momozange
  • ベストアンサー率67% (21/31)
回答No.2

Javaの実行時の「カレントディレクトリ」は基本的にjavaコマンドを発行した時点でのパスになります。 今回のResourceを使用したファイルアクセスはカレントディレクトの問題ではなく あくまでも「クラスパスが通ったリソースに対する完全パッケージ修飾」でアクセスすることが必要です。 なのでaaa.bbbパッケージにXXXX.gifを配置したのであれば、やはりaaa.bbb.XXXX.gifというアクセス方法になります。 要は通常のクラスファイルと同じようにアクセスすればよいのです。

noname#82539
質問者

お礼

 ご回答ありがとうございます。パッケージ的な形式でもできるのですね。

関連するQ&A