黑马程序员技术交流社区

标题: 关于io流的 [打印本页]

作者: jbl3344    时间: 2015-9-2 00:20
标题: 关于io流的
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放到输出流对象里,写出来是字符怎么理解。我在控制台打的是数值啊?
作者: belizer    时间: 2015-9-2 00:22
第你一个 也想知到
作者: lion_good    时间: 2015-9-2 10:40
首先,
  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类型.
遇到不明白的,先看源代码,能解决大部分问题.




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