它没有显示任何错误,但内容应该保存到我的文件中,而不是保存......
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);
}
}
}
如果我错了,请更正我的代码
答案 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();
}
}
}