teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記0

2019/04/12 06:10

投稿

BeatStar
BeatStar

スコア4962

answer CHANGED
@@ -6,4 +6,40 @@
6
6
  closeで生成する感じですね。
7
7
  (厳密には違うだろうけど。)
8
8
 
9
- なので close系を呼び出してみてください。
9
+ なので close系を呼び出してみてください。
10
+
11
+ ----
12
+ [追記0]
13
+
14
+ 一応根拠を書いておきます。
15
+
16
+ まず、C言語ではファイルの書き込みは、
17
+
18
+ 1. ファイルを開く
19
+ 2. <書き込み>
20
+ 3. ファイルを閉じる
21
+
22
+ という処理でやります。
23
+
24
+ ファイルを開くのはfopen関数と呼ばれる関数で開き、ファイルポインタと呼ばれるものを取得します。
25
+ これにファイルがどこまで読み込まれた/書き込まれたかとかの情報が入っているようです。
26
+
27
+ このファイルポインタを書き込み系の関数 ( fwrite関数だった気が ) に渡して書いてもらう。
28
+
29
+ そしてファイルポインタをfclose関数と呼ばれる関数に渡して閉じてもらう。
30
+
31
+ これが一連の処理。
32
+
33
+ で、多分だけど、Javaでは Fileクラスだっけ? あれで fopen関数に相当する処理をして、ファイルポインタに相当するものを保持。
34
+
35
+ そしてFileWriterクラスだっけ? それで書き込むときに...
36
+
37
+ とやっているはず。
38
+
39
+ あまりJavaは使っていないので詳しくはわかりませんが。
40
+
41
+ C++であれば デストラクタと呼ばれる、コンストラクタの反対の動きをするものがありますから、close系メソッドを呼び出さなくても自動的にやると思いますが、
42
+
43
+ Javaではそんなものないので、自分でclose系を呼び出さないといけない。
44
+
45
+ これをやっていないから 何も書かれていないファイル になるのではないかと。