- 555 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 17:00:11.67 ID:RXd3mBE5d.net]
- ZipInputStreamでzipファイルを展開した場合等、複数のファイルを扱う際のclose()の仕方についてどうするとよいか教えてください。
以下の様なソースを作ってます。zipファイルの内容物を展開していくものです。 ZipInputStream zis = null; FileOutputStream fos = null; try { zis = new ZipInputStream(new FileInputStream(zipFileName)); // <- for (ZipEntry entry = zis.getNextEntry(); entry != null; entry = zis.getNextEntry()){ extFileName = entry.getName(); fos = new FileOutputStream(extFileName); // <- while ((len = zis.read(zbuff)) != -1){ fos.write(zbuff, 0, len); } } } catch (IOException e) { e.printStackTrace(); } finally { try { zis.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } このようにソース中で複数のファイルへアクセスする場合、そのclose()はfinally句中でまとめてcloseする書き方でよいのでしょうか。 それとも、上記例でのfosをnewする時点でfos用のtry句を設け、fosのExceptionはそちらで処理すべきでしょうか。 fosのストリーム作成時にIOExceptionが発生したとき、finally句内のfos.close()で更に例外が発生しそうですが それは仕方ないとすべきか、それともファイルごとにIOExceptionを処理するべきかを知りたいです。
|

|