java-换行符不工作

java-换行符不工作,java,io,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</

我正在编写一个简单的程序,将数据写入所选文件。
一切都很顺利,除了换行符
\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();
}
public void prepare(){
String content=“\n\r\n\rrootroot\n\r”;
FileOutputStream=null;
试一试{
fos=新文件输出流(文件);
}捕获(FileNotFoundException ex){
System.out.println(“未找到文件..prepare()”;
}
字节b[]=content.getBytes();
试一试{
fos.编写(b);
fos.close();
}捕获(IOEX异常){
System.out.println(“IOException..prepare()”;
}
}
公共静态void main(字符串参数[]){
文件f=新文件(“D:\\test.xml”);
数据库数据=新数据库(f);
data.prepare();
}

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


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

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


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

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

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

System.getProperty("line.separator")

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

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

System.getProperty("line.separator")

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

你的观众也可能会有不同的解读。例如,记事本将只显示CRLF换行符,但Write或Word单独显示CR或LF没有问题


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

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

你的观众也可能会有不同的解读。例如,记事本将只显示CRLF换行符,但Write或Word单独显示CR或LF没有问题


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

您在中查看文件以查看是否出现换行符?注意,您正在写入XML文件。您打开xml文件的应用程序可能是罪魁祸首。我在NotepadOff主题上查看它:因为您使用的是xml,所以您可能应该使用xml库(
javax.xml.*
)。否则,在没有任何错误支持的情况下,您可能会遇到更多的格式/编码问题。您在中查看文件以查看是否出现换行符?注意,您正在写入XML文件。您打开xml文件的应用程序可能是罪魁祸首。我在NotepadOff主题上查看它:因为您使用的是xml,所以您可能应该使用xml库(
javax.xml.*
)。否则,在没有任何错误支持的情况下,您可能会遇到更多的格式/编码问题。比我快一英寸。:)请记住,使用
System.lineSeparator()
将使用当前平台的行尾;这可能不适用于在其上查看文件的其他平台。如果OP不在乎,那没关系。如果不管应用程序在哪个平台上运行,都要强制使用某个行分隔符,那么仍然要显式地编写它们。因此,“可能要使用”;)。1) 这是针对作品2)在没有读心术的情况下,我们通常在解释性文本中限定我们的“可能”。我是为你做的,不客气。比我快一英寸。:)请记住,使用
System.lineSeparator()
将使用当前平台的行尾;这可能不适用于在其上查看文件的其他平台。如果OP不在乎,那没关系。如果不管应用程序在哪个平台上运行,都要强制使用某个行分隔符,那么仍然要显式地编写它们。因此,“可能要使用”;)。1) 这是针对作品2)在没有读心术的情况下,我们通常在解释性文本中限定我们的“可能”。我是为你做的,不客气。