如何为每个循环创建一个新行?我的程序继续在一行中显示所有内容......或者如何设置diff类来从数组中写入数据
static void writetofile(studentClass[] students)
{
try(DataOutputStream str= new DataOutputStream(new FileOutputStream("new.txt")) )
{
for(int i=0;i<students.length;i++)
{
str.writeBytes(students[i].getStudentFname()+", ");
str.writeBytes(students[i].getStudentLname()+" ");
str.writeBytes(Integer.toString(students[i].getTestSore()));
str.writeBytes(" ");
str.writeChar(students[i].getGrade());
str.writeBytes("\n");
}
}
catch(Exception e)
{
System.out.println("Error");
}
}
答案 0 :(得分:2)
我怀疑您使用了错误的行分隔符,但是您尝试查看该文件:Windows使用\r\n
作为行分隔符,* nix使用\n
等。
如果您正在使用文本编辑器/浏览器来查看文件(即不是记事本),那么这应该不重要 - 它应该检测行分隔符。
您可能会发现使用java.util.Formatter
代替DataOutputStream
(以及增强的for循环)更容易:
try (Formatter fmt = new Formatter(new FileOutputStream(...)) {
for (studentClass student : students) {
fmt.format("%s, %s %d %s%n",
student.getStudentFname(),
student.getStudentLname(),
student.getTestSore(),
student.getGrade());
}
}
请注意,这使用%n
,这是运行代码的平台的特定于平台的行分隔符。如果您想指定特定的行分隔符,则可以使用\n
(或\r\n
或其他)代替。
答案 1 :(得分:0)
请勿使用private ObservableCollection<User> users = new ObservableCollection<User>();
撰写文本文件。使用DataOutputStream
。
DataOutputStream
的Javadoc说:
Writer
允许应用程序以可移植的方式将原始Java数据类型写入输出流。然后,应用程序可以使用DataInputStream
来重新读取数据。
用于以便携式二进制格式编写Java基元类型。不适用于编写文本文件。
但是Writer
:
写入字符流的抽象类。
要帮助打印换行符,请使用PrintWriter
:
将对象的格式化表示形式打印到文本输出流。
然后println()
方法将为您编写正确的行终止符。
所以,你的代码应该是:
DataOutputStream
您可以使用格式化版本printf()
:
try (PrintWriter out = new PrintWriter(new FileWriter("new.txt")))
{
for (Student student : students)
{
out.println(student.getStudentFname() + ", " +
student.getStudentLname() + " " +
student.getTestSore() + " " +
student.getGrade());
}
}
答案 2 :(得分:0)
这可以帮到你。
System.getProperty("line.separator");