A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 草鱼狂飙 中级黑马   /  2014-4-2 13:13  /  1344 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在文件续写中,\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");的结果又怎么解释?

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

5 个回复

倒序浏览
每个系统不一样的
windows 系统识别  \r\n
回复 使用道具 举报
在windows中 \r\n 表示回车,\n\r的话系统不识别就和没写一样。单写\r和\n windows系统一样会当不存在
回复 使用道具 举报
根据系统不同使用,苹果和windows都识别\r\n,苹果的也识别\n,但不识别\r,如果不想用这个,还可以使用JAVA跨平台通用的:separator(换行符)代替
回复 使用道具 举报
z1342802487 发表于 2014-4-2 13:43
在windows中 \r\n 表示回车,\n\r的话系统不识别就和没写一样。单写\r和\n windows系统一样会当不存在 ...

效果是这样,但是具体原理呢?
回复 使用道具 举报
\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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马