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

© 请备注 中级黑马   /  2014-4-7 13:17  /  1064 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;


class FileReaderDemo
{
    public static void main(String[] args)throws IOException
    {
        //创建一个读取流文件,并指定关联文件。如果文件不存在会发生FileNotFoundException。
        FileReader fr = new FileReader("demo.txt");

        int ch1 = fr.read();

        sop("ch1="+ch1);

        int ch2 = fr.read();

        sop("ch2="+ch2);

        int ch3 = fr.read();

        sop("ch3="+ch3);

        char[] cbuf = new char[1024];
       
        int length = 0;
       
        while((length=fr.read(cbuf))!=-1)
            sop("length="+length+"......"+new String(cbuf));

        sop(fr);
            
    }
        public static void sop(Object obj)
        {
            System.out.println(obj);
        }

}

C:\Users\Administrator\Desktop

4 个回复

倒序浏览
图片附上

J]]@KISGHSM6C5Q1RXLQ2DO.jpg (16.04 KB, 下载次数: 22)

J]]@KISGHSM6C5Q1RXLQ2DO.jpg
回复 使用道具 举报
问题出在这里:sop("length="+length+"......"+new String(cbuf));

由于你定义了一个字符数组 char[] cbuf = new char[1024];但是文件中只有前面的那些数据。然后你直接把整个字符数组输出,后面肯定是空白啊。你可以改写为这样就行了
sop("length="+length+"......"+new String(cbuf,0,length));//由于length代表了你一共读取了多少个字符。
当你输出的时候使用 new String(buf[] , int start, int end);这种格式,可以将字节数组buf中从start到end之间的字符提取为字符串。就是这样啦。希望能够帮到你。

评分

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

查看全部评分

回复 使用道具 举报
呵呵,又碰到一个跟我犯同样错误的。
sop("length="+length+"......"+new String(cbuf)
数组定义长度是char[] cbuf = new char[1024],1024个字符,没有的就会填空白,
所以你输出时使用 new String(cbuf,0,cbuf.length),就不会空白了
回复 使用道具 举报
zhangbingyuan 发表于 2014-4-7 14:32
问题出在这里:sop("length="+length+"......"+new String(cbuf));

由于你定义了一个字符数组 char[] cbuf ...

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