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

© 盛亚昆 中级黑马   /  2012-3-22 22:38  /  1982 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


import java.io.*;

class  FileReaderDemo4//读取
{
        public static void main(String[] args)  throws IOException
    {
                FileReader r=new FileReader("demo.txt");
                //定义一个字符串数组。用于存储读到的字符。
                //该read(char[])返回的是读到的字符个数

                char[] buf=new char[1024];//设定字符数组的长度,一般定义数组长度为2kb?
       
                //int num=r.read(buf);
                int num=0;       
                while ((num=r.read(buf))!=-1)//当不等于-1是就打印读取
                {
                        System.out.println(new String(buf,0,num));//new String(buf,0,num)是什么意思啊??


                }

                r.close();

               
       
        }

评分

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

查看全部评分

7 个回复

正序浏览
System.out.println(new String(buf,0,num));就是先把buf数组中的元素全部读出来,转换成字符串,然后打印出来。String(byte[] bytes, int offset, int length)
:通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。意思也就是把 byte[] bytes 这个数组中 从offset开始到 length长度的子数组元素全部取出,转换成String类型,new String只是new了一个对象
回复 使用道具 举报
李成 中级黑马 2012-3-23 00:18:22
7#
盛亚昆 发表于 2012-3-22 23:39
我说的是哪个new 是什么意思啊

System.out.println(new String(buf,0,num)); 是缩写
String abc=new String(buf,0,num);
System.out.println(abc);
回复 使用道具 举报
;//new String(buf,0,num)
num 是read()的返回值   意思是有多少个。
意思就是 将buf转成字符串 从buf的0 角标开始 到有多少个  比如read  读取了 10个字符  那么String 存入就是10个字符。
否则直接储存buf 的话 他的长度就是 1024了 2KB 太浪费了!
回复 使用道具 举报
我说的是哪个new 是什么意思啊
回复 使用道具 举报
本帖最后由 Destiny 于 2012-3-22 23:09 编辑

论坛挂了!!回复了10分钟都没回复上……{:soso_e105:}

1.char[] buf=new char[1024]    这读出的是字符,一个字符是2b  那么1024个字符自然就是2kB
2。System.out.println(new String(buf,0,num));     输出 字符数组buf中的内容,用字符串表示。  这个方法是因为String  类的构造方法中有一个是String(char[] value ,int x,int y),表示从角标为x开始的y个元素用字符串表示。

评分

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

查看全部评分

回复 使用道具 举报
利用String的构造函数将字符数组转换为字符串
回复 使用道具 举报
new String(buf,0,num)就是把字节数组buf的第一个元素到第num个元素转换为字符串
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马