如何在FileOutputStream的tex文件上创建一个新行

时间:2016-05-13 22:29:13

标签: java arrays newline fileoutputstream

如何为每个循环创建一个新行?我的程序继续在一行中显示所有内容......或者如何设置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");
     }
   }

3 个答案:

答案 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");