bufferWriter无法在新行中写入

时间:2017-08-20 10:43:51

标签: java file-io

我正在使用java文件,我想将文本写入文件,但它没有进入新行。如何用bufferWriter写新行?

public void setData() throws IOException{
    File file = new File("SchoolDB.txt");
    FileWriter fileWriter = new FileWriter(file);
    BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

    for(int j = 0; j < 5; j++){
        School school = new School();
        school = allSchools.get(j);
        //set name
        bufferedWriter.write(school.getName());
        //houses
        if(school.getHoused())
            for(int i = 0; i < school.getHouses().size(); i++)
                bufferedWriter.write(school.getHouses().get(i).getName());
        else 
            bufferedWriter.write("0");
        bufferedWriter.newLine();
        //courses 
        if(school.getHouses().size() != 0)
            for(int i = 0; i < school.getCourses().size(); i++)
                bufferedWriter.write(school.getCourses().get(i).getName());
        else 
            bufferedWriter.write("0");
        //students
        if(school.getNumOfStudents() != 0)
            for(int i = 0; i < school.getStudents().size(); i++)
                bufferedWriter.write(school.getStudents().get(i).getName());
        else 
            bufferedWriter.write("0");
        //professors
        if(school.getProfessor().size() != 0)
            for(int i = 0; i < school.getProfessor().size(); i++)
                bufferedWriter.write(school.getProfessor().get(i).getName());
        else 
            bufferedWriter.write("0");
        // '*'   :)
        bufferedWriter.write("*");
    }
    bufferedWriter.close();
}

它工作正常,但我无法用新的内容写 顺便说一句,这些方法我试过并且没有用:

  1. 我关闭了文件。
  2. \ n
  3. \ n \ r
  4. bufferWriter.newLine();
  5. ,输出如下: &#39;&#39; HogwartsGryffindorHufflepuffRavenclawSlytherin FlyingPotions0Minerva McGonagolSeverus Snape Beauxbatons0 00Olympe Maxime Durmstrang0 00Igor Karkaroff IlvermornyHorned SerpentWampusThunderbirdPukwudgie 防御黑暗艺术犯罪0Rionach Steward Koldovstoretz0 000 *&#39;&#39 ;. 它并没有在第一行分开

    解决: 我认为这是运行此代码的选项卡的问题。我在服务标签中。我在主选项卡中运行此代码,它工作正常。 注意:我刚换了标签。在主要我有这个类的对象。

2 个答案:

答案 0 :(得分:0)

你为什么不这么说

  

<强> bufferedWriter.write( “\ n”);

答案 1 :(得分:0)

BufferedWriter.newLine();

是与平台无关的添加换行符的方式。当你说你没有换行时,你的意思是什么?你如何打开SchoolDB.txt?您是否尝试使用十六进制查看器来查看实际字符?您是在一个操作系统(例如Linux)中创建它,而是在另一个操作系统中使用不同的新线条(例如Windows)进行检查吗?

无论如何,在Linux上试试

xxd SchoolDB.txt

并查找0a个字符(unix样式的EOL)与0d0a(Windows样式的CRLF)。如果您只有0a作为EOL标记,那么在Windows上您可能会将其视为一行。