java - 换行符不起作用

时间:2013-11-05 19:22:50

标签: java io

我正在编写一个将数据写入所选文件的简单程序 一切都很顺利,除了换行\n字符串写在文件中但没有换行符

我已经尝试了\n\n\r,但没有任何改变 该计划:

    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();
}

3 个答案:

答案 0 :(得分:5)

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

System.lineSeparator()

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

System.getProperty("line.separator")

答案 1 :(得分:1)

我的猜测是你正在使用Windows。写\r\n而不是\n\r - 因为\r\n是Windows上的换行符。

我确定你会发现你写入文件的字符 - 但是你需要了解不同的平台使用不同的默认换行符...以及不同的客户端将处理不同的事情。 (Windows上的记事本只能理解\r\n,其他文本编辑器可能更聪明。)

答案 2 :(得分:0)

Windows上的正确换行符序列为\r\n而非\n\r

您的观看者也可能以不同的方式解读它们。例如,记事本只显示CRLF换行符,但Write或Word在单独显示CR或LF时没有问题。

如果要查找当前平台的换行序列,则应使用System.lineSeparator()。如果您试图强制使用换行符格式,无论当前平台如何,您都可以正确地编写它们。