Java : Closeable - API使用例
Closeable (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。
概要
Closeable インタフェースは、リソース解放が必要なクラスに実装されます。
つまり、Closeable を実装しているオブジェクトは、使い終わったら close メソッドを呼び出してリソースを解放する必要があります。
※ByteArrayInputStream など、一部 close を呼び出さなくても問題ないクラスもあります。
また、Closeable は AutoCloseable を拡張しています。
そのため try-with-resources文 が使えます。
try-with-resources文を使うことで、明示的に close を呼び出さずにリソースを解放できます。
基本的には、try-with-resources文を使うことをおすすめします。
関連: try-with-resources文でリソースを自動的に解放
final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt
// try-with-resources文でリソースを解放します。
try (final var writer = Files.newBufferedWriter(path)) {
writer.write("abcd");
writer.newLine();
writer.write("XYZ");
writer.newLine();
}
final var str = Files.readString(path);
System.out.print(str);
// 結果
// ↓
//abcd
//XYZ
メソッド
void close ()
final var path = Path.of("R:", "java-work", "aaa.data");
System.out.println(path); // R:\java-work\aaa.data
try (final var outputStream = Files.newOutputStream(path)) {
outputStream.write(10);
outputStream.write(20);
outputStream.write(30);
}
final var bytes = Files.readAllBytes(path);
System.out.println(Arrays.toString(bytes)); // [10, 20, 30]
// try-with-resources文を使わない例です。
final var path = Path.of("R:", "java-work", "aaa.data");
System.out.println(path); // R:\java-work\aaa.data
final var outputStream = Files.newOutputStream(path);
try {
outputStream.write(10);
outputStream.write(20);
outputStream.write(30);
} finally {
outputStream.close();
}
final var bytes = Files.readAllBytes(path);
System.out.println(Arrays.toString(bytes)); // [10, 20, 30]