2016-11-06 19 views
0

- 私は、ユニットテストで私のリソースフォルダからファイルを読み込むFILENOTFOUND読むファイルが

私は

は、しかし、私がしようと、ターゲット/テスト・クラスでファイルを見ることができます

ファイルを見つけることができないので、この1つは例外をスローのFileInputStreamにファイルをラップする

ClassLoader classLoader = getClass().getClassLoader(); 
File file = new File(classLoader.getResource("CV.pdf").getFile()); 
FileInputStream fis = new FileInputStream(file) 

出力デバッグの:

classLoader.getResource(「CV.pdf」):

file:/Users/Development/File%20-%20Test%20Java%20trial/Code/target/test-classes/CV.pdf 

私のフォルダに空白の名前がある可能性がありますか?

ファイルがあることを確かめて、私はそのフォルダで見ることができます。

私はここで間違っていますか?

よろしくお願いいたします。

+0

まあ 'のgetResource(...)が返す'されていることをURLの値は何ですか? 'getFile'呼び出しはどのような値を返しますか? 'file'で終わるファイルパスは何ですか? –

+0

私の質問を出力で更新します – paul

+1

パスはURLエンコードされていますので、デコードする必要がありますhttp://stackoverflow.com/q/6138127/2670892 –

答えて

2

本当にFileInputStreamが必要ですか?

実際のファイルはjar内にあっても構いません(mavenにtest-jarを実行するよう指示した場合)。

より柔軟な方法ではなく、InputStreamを使用することです:

try(final InputStream is = getClass().getResource("CV.pdf").openStream()) 
{ 
    //Do something with is 
} 
+0

'getClass()。getResourceAsStream(" CV.pdf ")'だけでもできます。 – VGR