##目的
Java で Jar ファイルの中にリソースファイルを入れ、
そのリソースファイルを読み込みたいのですが、
その読み込むクラスと同じ階層のファイルしか読み込むことができません。
一つ下の階層のファイルまで読み込むにはどうすればよいのでしょか。
勉強は Eclipse を使っています。Eclipse で起動したときは下のようなエラーは発生しません。
###ファイル構成
Out.txt は起動後に生成されます。
###ファイルの内容
- same.txt <= same
- first.txt <= first
- second.txt <= second
- third.txt <= third
それぞれのファイル名が一文ずつ入力されています。
##エラーメッセージ
Exception in thread "main" java.lang.NullPointerException at java.io.Reader.<init>(Reader.java:78) at java.io.InputStreamReader.<init>(InputStreamReader.java:97) at step16.Test.<init>(Test.java:23) at step16.Test.main(Test.java:45)
生成した Jar ファイルをコマンドプロンプトで起動しました。
リソースファイルが見つからないようです。
###ソースコード
Java
1package step16; 2 3import java.io.*; 4 5public class Test { 6 Test(String name){ 7 try { 8 File f = new File("Out.txt"); 9 FileWriter fw = new FileWriter(f,true); 10 BufferedWriter bw = new BufferedWriter(fw); 11 PrintWriter pw = new PrintWriter(bw); 12 13 InputStream is = getClass().getResourceAsStream(name); 14 InputStreamReader isr = new InputStreamReader(is,"UTF-8"); 15 BufferedReader br = new BufferedReader(isr); 16 17 while (true){ 18 String temp = br.readLine(); 19 20 if (temp==null){ 21 break; 22 } 23 24 pw.println(temp); 25 } 26 27 pw.close(); 28 br.close(); 29 } catch (IOException e) { 30 } 31 } 32 @SuppressWarnings("unused") 33 public static void main(String[] args){ 34 Test t1=new Test("same.txt"); //同じ階層のファイル 35 Test t2=new Test("first\\first.txt"); //一つ下の階層のファイル 36 Test t3=new Test("../second.txt"); //一つ上の階層のファイル 37 Test t4=new Test("../third\\third.txt"); //一つ上の階層にあるディレクトリにあるファイル 38 } 39} 40
###実行結果
Eclipseで起動
Out.txt の内容は
- same
- first
- second
- third
でした。
Test.jar にエクスポートして起動(ダブルクリックやコマンドプロンプトから)
Out.txt の内容は
- same
でした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/01 04:24