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

© 盛亚昆 中级黑马   /  2012-3-22 22:38  /  1981 人查看  /  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 个回复

倒序浏览
new String(buf,0,num)就是把字节数组buf的第一个元素到第num个元素转换为字符串
回复 使用道具 举报
利用String的构造函数将字符数组转换为字符串
回复 使用道具 举报
本帖最后由 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

查看全部评分

回复 使用道具 举报
我说的是哪个new 是什么意思啊
回复 使用道具 举报
;//new String(buf,0,num)
num 是read()的返回值   意思是有多少个。
意思就是 将buf转成字符串 从buf的0 角标开始 到有多少个  比如read  读取了 10个字符  那么String 存入就是10个字符。
否则直接储存buf 的话 他的长度就是 1024了 2KB 太浪费了!
回复 使用道具 举报
李成 中级黑马 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);
回复 使用道具 举报
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了一个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马