Java BufferedWriter.newLine()除最后一行之外

Java BufferedWriter.newLine()除最后一行之外,java,bufferedwriter,Java,Bufferedwriter,我对此一无所知。我面临的问题是,我不希望在最后一行写入新文件后创建newLine()。我怎样才能做到这一点 while (((aLine = reader.readLine()) != null)) { writer.write(aLine); writer.newLine(); } 由于你看不到未来,你必须依靠过去:不是在最后一行之后发出新行,而是在除第一行之外的所有行之前发出新行: bool first

我对此一无所知。我面临的问题是,我不希望在最后一行写入新文件后创建
newLine()
。我怎样才能做到这一点

while (((aLine = reader.readLine()) != null)) {
                writer.write(aLine);
                writer.newLine();
            }

由于你看不到未来,你必须依靠过去:不是在最后一行之后发出新行,而是在除第一行之外的所有行之前发出新行:

bool first=true;
while (((aLine = reader.readLine()) != null)) {
    if(!first)writer.newLine();
    else first=false;
    writer.write(aLine);
}

作为对现有答案(建议先写新行)的一个细微变化:


切换该选项,并在除第一行之外的每行之前执行一个
换行()。当你在最后一行时很难判断,但应该很容易判断哪一行是第一行。@Thomas:这不会在第一行之前产生额外的新行吗?@PushpeshKumarRajwanshi嗯,我写了“…除了第一行”。不应在第一行之前创建新行。;)哦,好吧,对不起,除了第一个,我不知道你提到了。这样说你是对的。谢谢你的投入。特维马达尔的回答似乎完美地表达了这一点:)“因为你看不到未来”-我喜欢:)@Thomas我也喜欢:)谢谢特维马达尔的雄辩和帮助。
boolean flag = false;
while (((aLine = reader.readLine()) != null)) {
    if(flag)
        writer.newLine();
    writer.write(aLine);
    flag = true;
}
String separator = "";
while (((aLine = reader.readLine()) != null)) {
  writer.write(separator);
  writer.write(aLine);
  separator = System.lineSeparator();
}