黑马程序员技术交流社区

标题: java.io问题,求好心人指点 [打印本页]

作者: 范二青年    时间: 2014-1-10 10:45
标题: java.io问题,求好心人指点
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));没有输出实际读取的字节数?

作者: apples_benben    时间: 2014-1-10 11:12
我测试是正确的啊,你再试试吧
作者: 75100313    时间: 2014-1-10 11:54
in.reab(b)
是把东西读到数组b里面
返回值 只是为了判断还有没有东西可以读 并不是说读到了什么东西  
作者: 776699    时间: 2014-1-10 12:04
1,当你定义的缓冲区大小 小于你所读取的文件字节大小时,会打印出你缓冲区大小数;2,如果缓冲区大于文本字节数,会打印出读取到的字节数。
作者: IT人    时间: 2014-1-10 13:20
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));  
  
作者: 月生春    时间: 2014-1-10 18:47
read()方法读取的是字符啊, 返回的应对就是字符了,怎么肯呢过回事int值呢!
作者: 山治0712    时间: 2014-1-14 22:47
780个没错啊
作者: 放课后小朋友    时间: 2014-1-15 14:41
使用read方法返回的是int类型,并不是返回的字节数,而是返回的文本中的内容,虽然是int数据,但是可以被转换成该显示的内容




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