为什么fileWriter没有将内容保存到我的文件中?

时间:2018-04-26 02:59:15

标签: java

它没有显示任何错误,但内容应该保存到我的文件中,而不是保存......

import java.util.Scanner;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class FileReadLine {

    public static void main(String[] args) {

        try {

            String str;
            Scanner sc=new Scanner(System.in);

            do {

              System.out.println("Enter your lines");
              str=sc.nextLine();
              FileWriter fw = new FileWriter("C:/test/abcd.txt");

              if(!str.equals("stop"))
                fw.write(str);
              fw.write("\n");
              fw.close();
            } while(!str.equals("stop")); 

        } catch (Exception ex) {
            System.out.println(ex);
        }
     }
  }

如果我错了,请更正我的代码

3 个答案:

答案 0 :(得分:1)

您正在尝试在循环内创建新文件。所以它被覆盖了。更改程序以创建文件一次(在循环之前)并在循环内使用它来编写它。

也一旦写完文件就不要关闭文件。遇到“停止”后使用它。完成写入文件后,应使用Close()。

尝试在close()之前使用flush()将缓冲区中的所有数据发送到该文件。

答案 1 :(得分:0)

您在每次迭代中都关闭了编写器,因为您没有在if条件中使用大括号...

尝试此解决方案,正在运行

readline

答案 2 :(得分:0)

您必须在while循环中关闭FileWriter(fw)。

尝试以下代码

public static void main(String[] args) throws IOException {

    FileWriter fw = null;
    try {
        fw = new FileWriter("C:/Users/MYPC/Desktop/abcd.txt");
        String str;
        Scanner sc = new Scanner(System.in);

        do {
            System.out.println("Enter your lines");
            str = sc.nextLine();

            if (!str.equals("stop")){
                fw.write(str);
            }
            fw.write("\n");

        } while (!str.equals("stop"));

    } catch (Exception ex) {
        System.out.println(ex);
        // Logger.getLogger(FileReadLine.class.getName()).log(Level.SEVERE,
        // null, ex);
    }finally{
        if(fw != null){
            fw.close();
        }
    }
}