前提・実現したいこと
フォルダ内にある複数のファイルに関して、
同じ処理を行いたい。
また、例外が発生した場合は処理を抜ける
発生している問題・エラーメッセージ
抽象的で申し訳ないのですが、
for文の中にtry-catchブロックを書くことになんとなく違和感があるので、
以下のソースはjavaのお作法としてどうなのか、
ご教示いただけたらと思ってます。
該当のソースコード
java
1File[] files = new File("フォルダパス").listFiles(); 2 3 for (File file : files) 4 { 5 try (FileInputStream in = new FileInputStream(file)) 6 { 7 // 処理 } 8 catch (FileNotFoundException e) 9 { 10 e.printStackTrace(); 11 } 12 13 }
試したこと
try-with-resourcesではなく、
try-catchブロックを外出しにした方がいいのかで悩んでます。
外部からの呼び出しメソッド内です。
まだ自分の中で違和感がないのは以下です
Java
1FileInputStream fileInputStream = null; 2 try 3 { 4 for (int i = 0; i < files.length; i++) 5 { 6 fileInputStream = new FileInputStream(files[i]); 7 8 } 9 } 10 catch (FileNotFoundException e) 11 { 12 // 処理 13 } 14 finally 15 { 16 if (fileInputStream != null) 17 { 18 try 19 { 20 fileInputStream.close(); 21 } 22 catch (IOException e) 23 { 24 // 25 } 26 } 27 }
以下は通らないとわかっていますが、
これがなんとなくすっきりするというパターンです
※KSwordOfHasteさんの例5から
Java
1File[] files = new File("フォルダパス").listFiles(); 2 3 for (File file : files) 4 { 5 try (FileInputStream in = new FileInputStream(file)) 6 { 7 // 処理 } 8 }
補足情報(FW/ツールのバージョンなど)
Java8

回答5件
あなたの回答
tips
プレビュー