回答編集履歴

6

POI のコードを追加

2022/11/11 09:17

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -4,7 +4,6 @@
4
4
  java でも GC はファイル自体は削除しません。
5
5
 
6
6
  ---
7
-
8
7
  ```java
9
8
  try(FileInputStream fis = new FileInputStream(args[0])) {
10
9
  //fis から読んでなんたらかんたら
@@ -12,3 +11,20 @@
12
11
  //この時点で fis は自動で close され、かつスコープを抜けるため fis は GC による回収対象となるので
13
12
  // finally で fis.close() したり fis = null する必要は無い。(例外が発生しても同様。)
14
13
  ```
14
+ ```java
15
+ import java.io.File;
16
+
17
+ import org.apache.poi.ss.usermodel.*;
18
+
19
+ public class Main {
20
+ public static void main(String[] args) {
21
+ try(Workbook excel = WorkbookFactory.create(new File(args[0]))) { //Workbook は AutoCloseable
22
+ Sheet sheet = excel.getSheet("シート1"); //Sheet は close 無し
23
+ //(ry
24
+ } catch(Exception e) {
25
+ System.err.println("ファイル読込み失敗:" + e);
26
+ }
27
+ //excel は close され、 sheet 共々スコープを抜けて GC 対象へ
28
+ }
29
+ }
30
+ ```

5

追記

2022/11/11 08:50

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -10,5 +10,5 @@
10
10
  //fis から読んでなんたらかんたら
11
11
  }
12
12
  //この時点で fis は自動で close され、かつスコープを抜けるため fis は GC による回収対象となるので
13
- // finally で fis.close() したり fis = null する必要は無い。
13
+ // finally で fis.close() したり fis = null する必要は無い。(例外が発生しても同様。)
14
14
  ```

4

追加

2022/11/11 08:48

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -3,3 +3,12 @@
3
3
  は「ファイル自体」であって「Workbook や Sheet に当たるオブジェクト」のことでは無いように思います。
4
4
  java でも GC はファイル自体は削除しません。
5
5
 
6
+ ---
7
+
8
+ ```java
9
+ try(FileInputStream fis = new FileInputStream(args[0])) {
10
+ //fis から読んでなんたらかんたら
11
+ }
12
+ //この時点で fis は自動で close され、かつスコープを抜けるため fis は GC による回収対象となるので
13
+ // finally で fis.close() したり fis = null する必要は無い。
14
+ ```

3

修正

2022/11/11 03:20

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -1,3 +1,5 @@
1
+ C# での言及
2
+ >ファイルなどは「ガーベジコレクション」の管理対象外で、 明示的な破棄が必要です。
1
- C# での言及は「ファイル自体」であって「Workbook や Sheet に当たるオブジェクト」のことでは無いように思います。
3
+ は「ファイル自体」であって「Workbook や Sheet に当たるオブジェクト」のことでは無いように思います。
2
4
  java でも GC はファイル自体は削除しません。
3
5
 

2

変更

2022/11/11 03:19

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -1,2 +1,3 @@
1
+ C# での言及は「ファイル自体」であって「Workbook や Sheet に当たるオブジェクト」のことでは無いように思います。
1
- java でも GC はファイルは削除しません。
2
+ java でも GC はファイル自体は削除しません。
2
- C# でも Workbook や Sheet に当たるオブジェクトは GC で処理されても、(例えコード内で新規に作成したとしても)ファイルは削除したりはしないと思いますが…既存のファイルを示しているならなおさらでしょう。
3
+

1

追加

2022/11/11 03:17

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -1 +1,2 @@
1
1
  java でも GC はファイルは削除しません。
2
+ C# でも Workbook や Sheet に当たるオブジェクトは GC で処理されても、(例えコード内で新規に作成したとしても)ファイルは削除したりはしないと思いますが…既存のファイルを示しているならなおさらでしょう。