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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static void main(String[] args) throws IOException
        {
                // TODO Auto-generated method stub
                FileReader fr=new FileReader("demo.txt");
                char[] arr=new char[1024];
               
                int num=0;
                while((num=fr.read(arr))!=-1){
                        System.out.println(new String(arr,0,num));
                }
                fr.close();
        }

7 个回复

倒序浏览
本帖最后由 王国华 于 2012-3-14 08:45 编辑

0是角标,num是读到字符数组的长度

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
0和num的作用是表示开始和结束的位置。
fr.read(arr)在读取结束时返回的才是-1,其他时候返回的是当前字符数组的元素位置。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
char[] arr=new char[1024];
System.out.println(new String(arr,0,num));
String(arr,0,num)的作用是把arr数组中从0开始,num个字符变成字符数组
这样写的目的是当读到文件末尾时数组可能存不满 就没必要把后面的空字符也变成字符串打印出来  就是里面存多少打印出多少

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
在读取文件结束的时候,可能出现并没有1024字符的数据。为了节省空间,使用string[arr,0,aum]可以只读取字符数组中从0开始的aum字符,并不读取后面空余的空字符。
回复 使用道具 举报
0表示开始的位置,角标,num表示长度
回复 使用道具 举报
魏昂 黑马帝 2012-3-13 14:14:51
7#
我也学会了 谢谢哦
回复 使用道具 举报
new String(arr),这里的是为了把字符数组转成字符串打印出来,因为有可能这种情况,假如你的读入 数据只有几个或者几十个,如果用new String(arr)的话,会把1024个字符全转成了字符串,包括空格,全部打印出来了,num是记录字符数组的个数的,所以只要把0到num个字符转成字符串打印即可,提高了效率。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马