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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊其杰 中级黑马   /  2013-1-10 15:32  /  1338 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 樊其杰 于 2013-1-15 19:04 编辑

package com.test.eighteen;

import java.io.*;

public class FileReaderDemo2 {
        public static void main(String[] args) throws IOException{

                try {
                        FileReader fr = new FileReader("d:\\demo.txt");
                        char[] cbuf = new char[1024];

                        int num = 0;
                        while ((num = fr.read(cbuf)) != -1) {

                                System.out.println("num===" + num + "cbuf==="
                                                + new String(cbuf, 0, num));// 将数组转换成字符
                        }
                        fr.close();

                } catch (FileNotFoundException e) {

                        e.printStackTrace();
                }
        }

}


中程序中的        char[] cbuf = new char[1024];这个数组是怎么取到d:\\demo.txt中的数据的?

评分

参与人数 1技术分 +1 收起 理由
黄锦成 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
fr.read(cbuf),这个方法读取到的,然后填充到cbuf数组中。
回复 使用道具 举报
这个是在read方法内部实现的。当传入一个数组进去,read方法内部会一个字符一个字符读取,填充到数组中,当填满了之后,就返回一个int,表示元素个数。在填充数组时,会有一些指针之类的,你可以看一下源码,在老毕的视频里,他也有带我们去看源码
回复 使用道具 举报
舒远 发表于 2013-1-10 15:34
fr.read(cbuf),这个方法读取到的,然后填充到cbuf数组中。

嗯 ,现在明白了,谢谢,思路想偏了
回复 使用道具 举报
黄锦成 发表于 2013-1-10 15:38
这个是在read方法内部实现的。当传入一个数组进去,read方法内部会一个字符一个字符读取,填充到数组中,当 ...

嗯,我理解错了,我以为是先创建数组,然后再read 数组里的内容,谢谢
回复 使用道具 举报
   char[] cbuf = new char[1024]这是个自定义的缓冲区,
read()方法可以把fr的数据读到这个缓冲区中,返回数组cbuf的下标,
=-1表示以读到末尾

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马