Jdk 6 7 9ストリームクローズの新しいポーズ
2350 ワード
JDK6
JDK 6の前に、各リソースは手動でコードを書いて閉じる必要があります.
JDK 6の前に、各リソースは手動でコードを書いて閉じる必要があります.
FileInputStream fis = null;
byte[] buffer = new byte[1024];
try {
fis = new FileInputStream(new File("E:\\Java .txt"));
while (fis.read(buffer) > 0) {
System.out.println(new String(buffer));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
JDK7
JDK7 , :try-with-resources 。 java.lang.AutoCloseable
(java.io.Closeableはこのインタフェースを した)インタフェースは、プログラムが した に に じられます.
のようにファイルを み むストリームプログラムはJDK 7で きます.
byte[] buffer = new byte[1024];
try (FileInputStream fis = new FileInputStream(new File("E:\\Java .txt"))) {
while (fis.read(buffer) > 0) {
System.out.println(new String(buffer));
}
} catch (Exception e) {
e.printStackTrace();
}
try()
で され、finallyモジュールが されます.
のリソースを に じるtry()
では、try()
で に されたリソースが に じられる のリソースを できます.
JDK9
JDK 9がリリースされると、try-with-resources の い が されます.try()
には がありますが、finalまたはfinalと でなければなりません. のmisのように、mosは としてfinalを しなくてもよいし、 はfinalに しいが、メンバー として するにはfinalで しなければならない.そうしないとコンパイルエラーになる
MyInputStream mis = new MyInputStream();
MyOutputStream mos = new MyOutputStream();
try (mis; mos) {
mis.read("1.9");
mos.write("1.9");
} catch (Exception e) {
e.printStackTrace();
}
Connection dbCon = DriverManager.getConnection("url", "user", "password");
try (dbCon; ResultSet rs = dbCon.createStatement().executeQuery("select * from emp")) {
while (rs.next()) {
System.out.println("In loadDataFromDB() =====>>>>>>>>>>>> " + rs.getString(1));
}
} catch (SQLException e) {
System.out.println("Exception occurs while reading the data from DB ->" + e.getMessage());
}