56061


「スッキリわかるJava入門実践編第2版」を参考に下記の通りにしても、ログが出力されません。  
this.writer.write(msg);の後にthis.writer.close()とすれば、firstだけ出力されるのですが、secondも出力する方法はありますでしょうか。

※C:\Users\hoge\Desktop\testlog.txtにはすでにある状態です。

* * *

**MyLogger.java**

[code]

    public final class MyLogger {
        private static MyLogger theInstance;    /* 唯一のインスタンス保存用 */
        private FileWriter writer;
        private MyLogger() {
            try{
                this.writer = new FileWriter("C:\\Users\\hoge\\Desktop\\testlog.txt");
            }catch(IOException e) { /* エラー処理は省略 */ }
        }
        public void log(String msg) throws IOException {
            this.writer.write(msg);
        }
        public static MyLogger getInstance() {
            if(theInstance == null) theInstance = new MyLogger();
            return theInstance;
        }
    }
    
[/code]

**Main.java**

[code]

    public class Main {
        public static void main(String[] args) throws IOException {
    
            MyLogger myLogger1 = MyLogger.getInstance();
            myLogger1.log("first");
    
            MyLogger myLogger2 = MyLogger.getInstance();
            myLogger2.log("second");
    
        }
    }
    
[/code]


CC BY-SA 4.0
2019-06-24T08:26:30.670
56059
2019-06-24T09:32:19.937
2019-06-24T08:45:15.197
3060
27316
question
java
Javaでログが出力されないです。


`this.writer.close();`ではなく、`this.writer.flush();`ですかね。

`flush()`を呼び出さないと、ファイルへ書き込まれないので。`close()`を呼び出した場合は、自動的に`flush()`されますが、ファイルがクローズされているので、「second」は出力されず`IOException`がスローされます。


CC BY-SA 4.0
2019-06-24T09:16:37.610
56061
2019-06-24T09:32:19.937
2019-06-24T09:32:19.937
21092
21092
56059
answer