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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马—陈磊 中级黑马   /  2012-6-11 19:31  /  1311 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class ReadereTest {
public static void main(String[] args) throws IOException {
  try {
    Reader is=new FileReader("d:\\tet.txt");
                                 int i=0;
  while ((i=is.read())!=-1) {
     System.out.print((char)i);
  }
  is.close();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
    }  
  }
}
i是int ,然而is.read()视乎读到的是一个数据字节,数据字节是一个int类型吗?

4 个回复

倒序浏览
FileReader来读取字符文件的便捷类,其read方法返回的数据类型是int型。
回复 使用道具 举报
你查阅下API就知道了,这里的read()方法,返回的是读取的的字符的ascii值,当读取完后,再读取时就返回—1,还有:这里是FileReader()是Reader()的子类,是操作字符流的类,不是字节。
回复 使用道具 举报
Reader is=new FileReader("d:\\tet.txt");

先说一下,Reader Writer是字符流,InputStream OutputStream是字节流。因为要创建对象,所以LZ这里的Reader应该是FileReader。
既然是用FileReader来将要读取的字符串路径封装进对象,所以肯定是用的字符流。而字符流的读取过程中,肯定会读到结尾,这时就需要返回一个值来表示已经到结尾了。read()方法就是以int类型的-1来表示已读到结尾的
int i=0;
while ((i=is.read())!=-1) {
所以说这里的 i 只是为了作为结尾的标记存在的,read读取的当然是字符数据。LZ应该明白了吧,呵呵。
                              
回复 使用道具 举报
因为是字符流,所以返回的肯定是字符这是毫无疑问的,但是,当读取完毕之后,就返回-1,以表示读取完毕。其API解释如下:
public int read()
         throws IOException读取单个字符。

覆盖:
类 Reader 中的 read
返回:
读取的字符,如果已到达流的末尾,则返回 -1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马