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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜光 高级黑马   /  2013-6-2 09:44  /  1605 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 2013-6-2 12:52 编辑
  1. import java.io.*;

  2. class Copy
  3. {
  4.         public static void main(String[] args)throws IOException
  5.         {
  6.                 copy1();
  7.         }

  8.         public static void copy1()throws IOException
  9.         {
  10.                 FileWriter fw = new FileWriter("Copy_1.txt");
  11.                 FileReader fr = new FileReader("1.txt");
  12.                
  13.                
  14.                 int num = 0;
  15.                 while((num=fr.read())!=-1)
  16.                 {
  17.                         
  18.                         fw.write(num);
  19.                         System.out.println(num);
  20.                         
  21.                 }
  22.                 fw.close();
  23.                 fr.close();

  24.         }
  25. }
复制代码
  1. import java.io.*;

  2. class Copy
  3. {
  4.         public static void main(String[] args)throws IOException
  5.         {
  6.                 copy1();
  7.         }

  8.         public static void copy1()throws IOException
  9.         {
  10.                 FileWriter fw = new FileWriter("Copy_1.txt");
  11.                 FileReader fr = new FileReader("1.txt");
  12.                
  13.                
  14.                 int num = 0;
  15.                 while((num=fr.read())!=-1)
  16.                 {
  17.                         
  18.                         fw.write(num);
  19.                         
  20.                         System.out.println(num=fr.read());
  21.                 }
  22.                 fw.close();
  23.                 fr.close();

  24.         }
  25. }
复制代码
1.txt内容:abcdef
上面这两段代码执行后不一样,
第一段代码写入到copy_1里面的内容是:abcdef,输出到控制台上是97 98 99 100 101 102

第二段代码写入到copy_1里面的内容是:ace,输出到控制台上是98 100 102

求解释。。。。



评分

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

查看全部评分

5 个回复

倒序浏览
因为fr.read()返回的是个int类型的值 当然输出是数字了 你在加个类型转换就是是字母了
回复 使用道具 举报
忧伤 发表于 2013-6-2 10:01
因为fr.read()返回的是个int类型的值 当然输出是数字了 你在加个类型转换就是是字母了 ...

我意思是 为什么 两段代码 输出的不一样
回复 使用道具 举报
很正常。。第二个 使用了两次 read()方法   ,每使用一次read方法 指针就会向后移动一次。。你懂了么?
回复 使用道具 举报
刘茂林 发表于 2013-6-2 11:47
很正常。。第二个 使用了两次 read()方法   ,每使用一次read方法 指针就会向后移动一次。。你懂了么? ...

哦。。大概明白了。。
回复 使用道具 举报
杜光 发表于 2013-6-2 12:52
哦。。大概明白了。。

while((num=fr.read())!=-1)
                {
                        
                        fw.write(num);
                        
                        System.out.println(num=fr.read());


是不是使用了两次read    第一次 是在循环判断中 第二次是在打印数据中

read方法 你自己去看看那把
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马