我正在编写一个将数据写入所选文件的简单程序
一切都很顺利,除了换行\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();
}
答案 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()
。如果您试图强制使用换行符格式,无论当前平台如何,您都可以正确地编写它们。