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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jbl3344 中级黑马   /  2015-9-2 00:20  /  523 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

FileReader fr=new FileReader("F:\\workspace\\day20-zuoye\\aa\\aa.txt");
        FileWriter fw=new FileWriter("aa\\bb\\bb.txt");
       
        int i=0;
        //2,read方法读取每一个字符。
        while((i=fr.read())!=-1){
        //3,并把字符写进bb.txt。
                System.out.println(i);//注意:我写进去的是int值。
                fw.write(i);//注意:我写进去的是int值。
        }
       
        fw.close();
上面代码我可以把int类型i放到输出流对象里,写出来是字符怎么理解。我在控制台打的是数值啊?

2 个回复

倒序浏览
第你一个 也想知到
回复 使用道具 举报
首先,
  1. public class FileWriter extends OutputStreamWriter
复制代码
,FileWriter 继承自OutputStreamWriter,OutputStreamWriter中write(int)定义为
  1. public void write(int c) throws IOException {
  2.     se.write(c);
  3. }
复制代码

而se是StreamEncoder类的对象,而StreamEncoder中write(int)定义为
  1. public void write(int c) throws IOException {
  2.     char cbuf[] = new char[1];
  3.     cbuf[0] = (char) c;
  4.     write(cbuf, 0, 1);
  5. }
复制代码

看到了吧,int先转化为了char类型,因此输出为char类型.
遇到不明白的,先看源代码,能解决大部分问题.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马