3

所以当我使用我写入我的文本文件时,FileOutputSstream我同时使用了

fos.write(("0"+"\n").getBytes());

fos.write(System.getProperty("line.separator").getBytes());

而且它们都不起作用...它们仍然在同一行上打印...

有什么想法吗?

4

6 回答 6

2

好的,所以我想通了...由于某种原因,当我在这里尝试每个示例时,唯一有效的是 ps.print("one\r\n"); 这真的很奇怪,因为我知道它为什么起作用,但它确实......

于 2012-12-20T03:52:44.483 回答
1

使用 PrintStream

System.out 例如是一个 PrintStream。

你说你有一个 FileOutputStream。然后,

FileOutputStream f = new FileOutputStream("test.txt");
PrintStream ps = new PrintStream(f);
ps.print("line1");
ps.println(); //this writes your new line
ps.print("line2");
ps.close();

你也可以使用;

BufferedWriter fos = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename)));
      fos.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
      fos.newLine();
于 2012-12-19T23:24:38.263 回答
1

每个平台的换行符都不同。对于 unix 系统(MacOS X、Linux、...和 ​​Android,因为它使用修改后的 linux 内核),行分隔符是0x0A; 对于 MS Windows,它有两个字节长0x0D,0x0A:对于老式 MacOS,它是0x0D.

这意味着由Android编写的Android换行符在被Notepad.exe等特别愚蠢的Windows程序打开时将不可见。更智能的程序(例如编程编辑器或 IDE)将毫无问题地显示它。

于 2012-12-19T23:43:54.977 回答
1

您可以使用 println 方法

PrintStream ps=new PrintStream(new FileOutputStream("outputPath"));
for(String line:lines)
    ps.println(line);
于 2014-01-07T09:56:21.527 回答
0

用这个:

public  byte[] newLine() {
    byte[] temp = new byte[2];
    temp[0] = 13;
    temp[1] = 10;
    return temp;
}

只需将其写入您的 FileOutputStream。像这样:

    FileOutputStream.write(newLine());

这将简单地写入字节:13 和 10。

于 2012-12-19T23:33:15.903 回答
-1

您必须像这样附加行分隔符/中断。

尝试

String separator = System.getProperty("line.separator");
    fos.append(seperator);
于 2012-12-19T23:26:03.543 回答