回答編集履歴
6
POI のコードを追加
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
追記
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
追加
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
修正
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
C# での言及
|
2
|
+
>ファイルなどは「ガーベジコレクション」の管理対象外で、 明示的な破棄が必要です。
|
1
|
-
|
3
|
+
は「ファイル自体」であって「Workbook や Sheet に当たるオブジェクト」のことでは無いように思います。
|
2
4
|
java でも GC はファイル自体は削除しません。
|
3
5
|
|
2
変更
test
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
+
C# での言及は「ファイル自体」であって「Workbook や Sheet に当たるオブジェクト」のことでは無いように思います。
|
1
|
-
java でも GC はファイルは削除しません。
|
2
|
+
java でも GC はファイル自体は削除しません。
|
2
|
-
|
3
|
+
|
1
追加
test
CHANGED
@@ -1 +1,2 @@
|
|
1
1
|
java でも GC はファイルは削除しません。
|
2
|
+
C# でも Workbook や Sheet に当たるオブジェクトは GC で処理されても、(例えコード内で新規に作成したとしても)ファイルは削除したりはしないと思いますが…既存のファイルを示しているならなおさらでしょう。
|