为什么另一部分没有打印在下一行?

时间:2011-08-12 10:18:06

标签: java string file

从以下代码:

import java.io.*;

class fileTester {
  public static void main( String args[]) throws IOException {
    String string = "Suhail" + "\n" + "gupta";
    FileOutputStream fos = new FileOutputStream( new File("break.txt"));
    byte[] data = string.getBytes();
    fos.write( data );
    fos.close();
  }
}

我希望输出为:

Suhail

古普塔

在创建的文件中(即新行中的两个字符串),但输出在一行中。 Suhail gupta

为什么当我在2个字符串之间使用\n字符时呢?

5 个答案:

答案 0 :(得分:3)

写入文件时,不应对新行字符进行硬编码。改为使用特定于操作系统的换行符:

String newline = System.getProperty("line.separator");

此外,不是使用FileOutputStream将原始字节写入文本文件,为什么不将其包装在PrintStream对象中,以便您可以轻松地使用println(...)为您创建新行?

答案 1 :(得分:1)

我猜您正在使用记事本查看该文件。

行尾字符因系统而异。更高级的文本编辑器(v.g. Notepad ++)将正确显示它,因为它试图找到为此文件准备的系统。

通常,不要使用“\ n”,而是使用

 java.lang.System.getProperties().get("line.separator")

答案 2 :(得分:0)

如果您的操作系统是Windows,而不是必须使用\r\n换行,只有\n在Windows中不起作用,您可以找到更多详细信息here

答案 3 :(得分:0)

这是因为对于Windows新行是:\ r \ n。在其他OS \ n将是好的

答案 4 :(得分:0)

当您需要一个新行时,最佳做法是使用系统换行符串,方法是在System.getProperty(“line.separator”)中放置换行符。

这样,它将为你正在制作文件的平台(windows / mac / linux)使用正确的新行。