如何在 tex 文件上为 FileOutputStream 换行

how to make a new line on tex file for FileOutputStream

如何为每个循环创建一个新行?我的程序一直在一行中显示所有内容...或者我如何设置 diff class 以从数组

写入数据
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");
     }
   }

我怀疑您在尝试查看文件时使用了错误的行分隔符:Windows 使用 \r\n 作为行分隔符,*nix 使用 \n 等.

如果您使用文本 editor/viewier 来查看文件(即不是记事本),这无关紧要 - 它应该检测行分隔符。


您可能会发现使用 java.util.FormatterDataOutputStream(以及增强的 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 或其他)代替。

不要使用 DataOutputStream 编写 text 文件。使用 Writer.

JavaDataOutputStream 的文档说:

A DataOutputStream lets an application write primitive Java data types to an output stream in a portable way. An application can then use a DataInputStream to read the data back in.

它用于以可移植的二进制格式编写Java原始类型。不适用于编写 text 文件。

A Writer 但是:

Abstract class for writing to character streams.

为了帮助打印换行符,使用 PrintWriter:

Prints formatted representations of objects to a text-output stream.

然后 println() 方法将为您编写正确的行终止符。

所以,您的代码应该是:

try (PrintWriter out = new PrintWriter(new FileWriter("new.txt")))
{
    for (Student student : students)
    {
        out.println(student.getStudentFname() + ", " +
                    student.getStudentLname() + " " +
                    student.getTestSore() + " " +
                    student.getGrade());
    }
}

你可以这样使用格式化版本,printf():

try (PrintWriter out = new PrintWriter(new FileWriter("new.txt"))) {
    for (Student student : students)
        out.printf("%s, %s %d %c%n",
                   student.getStudentFname(),
                   student.getStudentLname(),
                   student.getTestSore(),
                   student.getGrade());
}

这对你有帮助。

System.getProperty("line.separator");