92358


javaでscannerクラスを使わずに、空白文字が入力されるまで1行ごとに入力された文字列を読み取り、空白が入力されればファイルへ書き出しを行うプログラムを作っています。

例）12,aaa,3bと入力し、その後何も入力せず改行するとテキストファイルに12,aaa,3bが表示される

しかし、空白の判定がうまくできずに、プログラムが終了しなかったりファイルに最初に打ち込んだ文字だけが無限に表示されたりしてうまくいきません。どう直せばよいのかどなたか教えてください。

[code]

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class TextOuter {
       　　　 public static void main(String[] args) {
       　　 　　　try{
                　　　　　　　BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
               　　　　　　　File file = new File("out/kadai8_01.txt");
                　　　　　　　FileWriter fw= new FileWriter(file);
                　　　　　　　String line =buf.readLine();
                　　　　　　　do{
                　　　　　　　if((line=buf.readLine()) != null) {
                      　　　　　fw.write(line);
               　　　　　　　 }else {
                    　　　　　　break;
               　　　　　　 }
                　　　　　　　} while(true);
                　　　　　fw.close();
            　　　　　}catch(IOException e) {
                　　　　System.out.println(e);
           　　　 }
        　　}
    }
    
[/code]


CC BY-SA 4.0
2022-11-21T11:27:48.017
92357
2022-11-21T12:12:30.770
2022-11-21T11:49:55.710
9820
55524
question
java
入力された文字列をファイルに保存するためのプログラム


[BufferedReader#readLine](https://docs.oracle.com/javase/jp/8/docs/api/java/io/BufferedReader.html#readLine--)は入力状態が続いている限り`null`を返しません。  
文字列を入力せずに改行した場合、`null`ではなく **空の文字列**`""`を返します。  
※コメントの通り、「その後何も入力せず改行する(行頭で`enter`を押す)」と「空白文字が入力される(任意の位置で`space`を押す)」の意味は異なりますが、前者が求めている挙動と判断して回答しています。

**サンプルコード**

[code]

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class TextOuter {
        public static void main(String[] args) {
            try {
                BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
                File file = new File("out/kadai8_01.txt");
                FileWriter fw = new FileWriter(file);
                String line;
                while((line = buf.readLine()) != "") {
                    fw.write(line);
                }
                buf.close();
                fw.close();
            } catch (IOException e) {
                System.out.println(e);
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2022-11-21T12:12:30.770
92358
2022-11-21T12:12:30.770
9820
92357
answer