2017-03-15 7 views
0

私はJARファイルにressourcesを入れたいですが、使用したいときに問題があります。私はこのコードのパスを示している場合:Javaのressourceのnull値

JOptionPane.showMessageDialog(null, MyStaticClass.class.getResource("/ressources/") + "file.File" + i, "OK", JOptionPane.INFORMATION_MESSAGE); 
       File file = new File(MyStaticClass.class.getResource("/ressources/") + "file.File" + i); 

をメッセージボックスの結果はjar:file:/home/clement/Bureau/Untitled.jar!/ressources/niveau.Niveau1とexeption

java.io.FileNotFoundException: jar:file:/home/clement/Bureau/Untitled.jar!/ressources/file.File1 (No file or folder of this type) 

ファイルはSRC/ressources/file.File1

+0

これを試してくださいhttp://stackoverflow.com/questions/941754/how-to-get-a-path-to-a-resource-in-a-java-jar-file –

答えて

0
にsrcフォルダ内にあるあります

getResourceAsStream()InputStreamを返します。あなたのコードは基本的に、ファイルではなくディレクトリである '/ ressources /'ファイルを探します。getResourceAsStream()nullを返します。

InputStreamの印刷には意味がありません。あなたはどうする可能性があり、このようなものです:

InputStream is = MyStaticClass.class.getResourceAsStream("/ressources/" + "file.File1") 

そしてInputStreamread()方法を使用して、またはInputStreamReaderでそれをラップし、それがread()をだ使用し、例えば(その内容を読み取ることが、より助言を与えることは難しいです。私はあなたが読んで何をどうしたいのかわからない。

更新を更新し、質問コードのFに合わない

getResource()戻りURLインスタンスを、次の(+演算子を使用して連結する場合)。あなたがgetFile()方法の助けを借りて好きなら、あなたはFileインスタンスに変換することができます:

File file = new File(MyStaticClass.class.getResource("/ressources/" + "file.File" + i).getFile()); 

getResource()は完全なリソース名だけでなくディレクトリ名を呼ばれていることに注意してください。

次に、Fileインスタンスで作業できます。

しかし、あなただけのリソースの内容を読みたい場合は、あなたが(URLインスタンスを取得する必要はありませんと)次のような何かができる:

InputStream is = MyStaticClass.class.getResourceAsStream("/ressources/" + "file.File1") 
Scanner scanner = new Scanner(new InputStreamReader(is, "utf-8")); 
try { 
    if (scanner.hasNextLine()) { 
     System.out.println(scanner.nextLine()); 
    } 
} finally { 
    scanner.close(); 
} 

この例では、ファイルがテキストファイルであることを前提とし、少なくとも1行あります。その行がコンソールに表示されます。

+0

私は質問を編集しました。私が試した他のコード。ありがとう。 –

+0

私はそれに応じて私の答えを更新しました –

関連する問題