Java编程中的/r/n 与/n的区别

该文章转载于此处:http://asher.blog.163.com/blog/static/174174566201221501537288/

1,将字符串写入到文件时,换行符有一些会被过滤掉,没有任何效果。


解决办法:
那是因为默认的情况下,界面上的换行时用的"\n",这是LINUX和UNIX的换行符。在windows下换行符是"\r\n". 
所以再将String对象写入到文件时,换行符应该把\n写完整成\r\n
例1:

String s = "12443\nkdjf";
//改成String s = "1244\r\nkdjf";      输出结果一样
                                                                    
System.out.print(s);
输出结果是:
12443
kdjf

例2:
String s = "12443\nkdjf";
PrintStream ps = new PrintStream(".\\"+ "testStringNextLine.txt");
ps.print(s);

在文件testStringNextLine.txt里的显示结果是:
12443kdjf
\n符号直接被忽略
一旦将定义改成如下形式:
String s = "12443\r\nkdjf";   //注意多了\r
显示结果将变成:
12443
kdjf

完整程序:
 
   

public static void main(String[] args) throws IOException {
String s = "dsfjks" + "\n";
System.out.print(s);
StringBuffer sb = new StringBuffer("sdfkjds");

sb.append("\r\n");
sb.append("2323");
sb.append("\r\n");
sb.append("fjkdsl");
sb.append("\r\n");
//\n和\r\n都一样,在在控制台输出正常换行
System.out.print(sb.toString());


File f = new File(".\\"+ "testStringNextLine.txt");
f.createNewFile();

File f2 = new File(".\\"+ "testStringNextLine2.txt");
f2.createNewFile();
try {
//无论这里加几个\n,PrintStream输出到文件的换行符都被过滤掉
PrintStream ps = new PrintStream(".\\"+ "testStringNextLine.txt");
ps.print(sb.toString());
ps.print("\r\n");
ps.print("234");
ps.print("\r\n");
ps.close();

FileWriter fw = new FileWriter(f2);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(sb.toString());
bw.write("\r\n");
bw.write("\r\n");

String s2 = "djfkljw\r\n2323\r\n";
System.out.print(s2);
bw.write(s2);

bw.close();

} catch (FileNotFoundException e) {
e.printStackTrace();
}


}

猜你喜欢

转载自blog.csdn.net/qq_18726495/article/details/81026513