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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范二青年 中级黑马   /  2014-1-10 10:45  /  1129 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
public class TestFileReader{
        public static void main(String args[]){  
                FileReader in= null;  
                try{   
                        in = new FileReader("D:\\java\\TestFileReader.java");  
                }catch(FileNotFoundException f){   
                        System.out.println("文件没找到!");   
                        System.exit(-1);   
                }  
                try{   
                        char b[] = new char[1024];   
                        System.out.println(in.read(b));   
                        System.out.println(b);   
                        in.close();  
                }catch(IOException ie){   
                        System.out.println("文件读取错误!");   
                }
        }
}

其中read()方法返回值int不是指的是实际读取的数据吗?为什么System.out.println(in.read(b));没有输出实际读取的字节数?

评分

参与人数 1技术分 +2 收起 理由
wym + 2 淡定

查看全部评分

7 个回复

倒序浏览
我测试是正确的啊,你再试试吧
回复 使用道具 举报
in.reab(b)
是把东西读到数组b里面
返回值 只是为了判断还有没有东西可以读 并不是说读到了什么东西  
回复 使用道具 举报
1,当你定义的缓冲区大小 小于你所读取的文件字节大小时,会打印出你缓冲区大小数;2,如果缓冲区大于文本字节数,会打印出读取到的字节数。
回复 使用道具 举报
Reader下的int read(char[] buf)是讲字符读入数组,存在数组当中,返回的是读取字符数,如果达到末尾就返回-1:
代码演示:                  FileReader in = new FileReader("d:\\Demo.txt");
例如:你定义一个数组:char[] buf = new char[4];
                                 int num = in.read(buf);
        如果Demo.txt文件里边的内容是abc,那么num = 3;如果内容是a,那么num=1;
          并且你打印的方式也有错误。要把数组转换为String类型的对象。正确的打印是:
System.out.println(new String(b));  
  
回复 使用道具 举报
read()方法读取的是字符啊, 返回的应对就是字符了,怎么肯呢过回事int值呢!
回复 使用道具 举报
780个没错啊
回复 使用道具 举报
使用read方法返回的是int类型,并不是返回的字节数,而是返回的文本中的内容,虽然是int数据,但是可以被转换成该显示的内容
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马