黑马程序员技术交流社区

标题: 关于文件续写中\n与\r的区别? [打印本页]

作者: 草鱼狂飙    时间: 2014-4-2 13:13
标题: 关于文件续写中\n与\r的区别?
[qq]979732175[/qq]在文件续写中,\n和\r的区别?
  1. import java.io.FileWriter;
  2. import java.io.IOException;

  3. public class day18_9 {
  4.         public static void main(String[] args) throws IOException {
  5.                 FileWriter fw = new FileWriter("demo3.txt", true);
  6.                
  7.                 fw.write("hjhjhjjjj333\r\n");
  8.                 fw.write("hjhjhjjjj333\r\n");
  9.                 fw.write("hjhjhjjjj333\r\n");
  10.                 fw.close();
  11.         }

  12. }
复制代码
这是正确的代码,可以打印出这个效果:



但是如果这样代码这样写:
  1. import java.io.FileWriter;
  2. import java.io.IOException;

  3. public class day18_9 {
  4.         public static void main(String[] args) throws IOException {
  5.                 FileWriter fw = new FileWriter("demo3.txt", true);
  6.                 fw.write("hjhjhjjjj333\n\r");
  7.                 fw.write("hjhjhjjjj333\n\r");
  8.                 fw.write("hjhjhjjjj333\n\r");
  9.                 fw.close();

  10.         }

  11. }
复制代码
结果却是这样:
\n \r区别在哪里?单独使用fw.write("hjhjhjjjj333\r");和fw.write("hjhjhjjjj333\n");的结果又怎么解释?

作者: osully    时间: 2014-4-2 13:22
每个系统不一样的
windows 系统识别  \r\n
作者: z1342802487    时间: 2014-4-2 13:43
在windows中 \r\n 表示回车,\n\r的话系统不识别就和没写一样。单写\r和\n windows系统一样会当不存在
作者: 杨希    时间: 2014-4-2 13:47
根据系统不同使用,苹果和windows都识别\r\n,苹果的也识别\n,但不识别\r,如果不想用这个,还可以使用JAVA跨平台通用的:separator(换行符)代替
作者: 草鱼狂飙    时间: 2014-4-2 13:55
z1342802487 发表于 2014-4-2 13:43
在windows中 \r\n 表示回车,\n\r的话系统不识别就和没写一样。单写\r和\n windows系统一样会当不存在 ...

效果是这样,但是具体原理呢?
作者: yujiangjiao    时间: 2014-4-2 14:35
\n是换行符
\r是回车符
在 Linux 和Unix 系统里,每一行的结尾使用换行,即“\n”,在Windows系统里,每一行结尾使用回车、换行,即“ \r\n”,所以如果在Linux 或Unix系统下的文件在Windows里打开的话,所有文字就不会换行,而Windows里的文件在Unix和 Linux 系统中打开,在每行的结尾可能会多出一个“\r” 在该系统中编译出的符号。
Java 语言为了提高跨平台性,在BufferedWriter 中提供了换行的 newLine()方法,在任何平台下都可以识别换行,所以 如果提高代码的跨平台 最好使用BufferedWriter  缓冲区
代码如下:

  1. import java.io.*;
  2. import java.io.IOException;

  3. public class day18
  4. {
  5.         public static void main(String[] args) throws IOException
  6.         {
  7.          FileWriter fw = new FileWriter("demo3.txt", true);
  8.                  BufferedWriter bw=new BufferedWriter(fw);
  9.          bw.write("hjhjhjjjj333");
  10.                  bw.newLine();
  11.          bw.write("hjhjhjjjj333");
  12.                  bw.newLine();
  13.          bw.write("hjhjhjjjj333");
  14.                  bw.newLine();
  15.          bw.close();

  16.     }

  17. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2