0

I'm writing a simple program that writes data to the selected file .
everything is going great except the line breaks \n the string is written in the file but without line breaks

I've tried \n and \n\r but nothing changed
the program :

    public void prepare(){
    String content = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n\r<data>\n\r<user><username>root</username><password>root</password></user>\n\r</data>";
    FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(file);
    } catch (FileNotFoundException ex) {
        System.out.println("File Not Found .. prepare()");
    }
    byte b[] = content.getBytes();
    try {
        fos.write(b);
        fos.close();
    } catch (IOException ex) {
        System.out.println("IOException .. prepare()");
    }
}
public static void main(String args[]){
    File f = new File("D:\\test.xml");
    Database data = new Database(f);
    data.prepare();
}
4

3 回答 3

5

Windows 的行尾遵循格式\r\n,而不是\n\r. 但是,您可能希望使用与平台相关的行尾。要确定当前平台的标准行尾,您可以使用:

System.lineSeparator()

...如果您运行的是 Java 7 或更高版本。在早期版本中,使用:

System.getProperty("line.separator")
于 2013-11-05T19:26:25.487 回答
1

我的猜测是您使用的是Windows。写\r\n而不是\n\r- 就像\r\nWindows 上的换行符一样。

我相信您会发现您正在写入文件的字符在那里- 但您需要了解不同的平台使用不同的默认换行符......并且不同的客户端会以不同的方式处理事情。(Windows 上的记事本只能理解\r\n,其他文本编辑器可能更聪明。)

于 2013-11-05T19:24:22.523 回答
0

windows 上正确的换行顺序\r\n不是\n\r.

此外,您的观众可能会以不同的方式解释它们。例如,记事本只会显示 CRLF 换行符,但 Write 或 Word 单独显示 CR 或 LF 没有问题。

System.lineSeparator()如果要查找当前平台的换行序列,则应使用。如果您试图强制换行格式而不管当前平台如何,您明确编写它们是正确的。

于 2013-11-05T19:27:54.790 回答