黑马程序员技术交流社区

标题: while语句fr.read()传递给ch的是什么? [打印本页]

作者: 18463730277    时间: 2015-5-26 23:12
标题: while语句fr.read()传递给ch的是什么?
// 用字符流--一次一个字符
        private static void method1() throws IOException {
                // 封装数据源和目的地
                FileReader fr = new FileReader("mn.jpg");
                FileWriter fw = new FileWriter("d:\\mn.jpg");

                // 基本读写
                int ch = 0;
                while ((ch = fr.read()) != -1) {
                        fw.write(ch);
                        // fw.flush();
                }

                // 释放资源
                fw.close();
                fr.close();
        }


作者: h782205380    时间: 2015-5-26 23:21
ch不是0吗
作者: thoris    时间: 2015-5-27 00:14
read返回的是int    这个值先赋给ch   再判断是不是-1
作者: 18463730277    时间: 2015-5-27 00:32
thoris 发表于 2015-5-27 00:14
read返回的是int    这个值先赋给ch   再判断是不是-1

为什么选择-1,如果是0会是什么情况?
作者: thoris    时间: 2015-5-27 19:53
18463730277 发表于 2015-5-27 00:32
为什么选择-1,如果是0会是什么情况?

0可以转换陈个对应的char字符  即 (char)0
楼主的这个例子  读取图片是不能用字符流的 图片里面的数据不能转换成正常的字符
作者: 18463730277    时间: 2015-5-29 22:31
thoris 发表于 2015-5-27 19:53
0可以转换陈个对应的char字符  即 (char)0
楼主的这个例子  读取图片是不能用字符流的 图片里面的数据 ...

原来是这样,:handshake
作者: 林RM    时间: 2015-5-29 23:31
fr.read()方法,如果流读到到数据会返回ch,读不到会返回-1,所以条件语句是ch!=-1执行循环,当返回-1时循环结束




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