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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李健09 中级黑马   /  2013-8-17 13:51  /  1191 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李健09 于 2013-8-18 10:10 编辑
  1. package com.IO;
  2. /*
  3. 第二种方式:通过字符数组进行读取
  4. */
  5. import java.io.*;
  6. public class IOFileReaderZFSZ
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 FileReader fr=null;
  11.                 try
  12.                 {
  13.                         fr=new FileReader("demo.txt");
  14.           char[] buf=new char[1024];
  15.           int num=0;
  16.                         while((num=fr.read(buf))!=-1)
  17.                         {
  18.                                 sop(new String(buf,0,num));
  19.                         }
  20.                 }
  21.                 catch(IOException e)
  22.                 {
  23.                         sop(e.toString());
  24.                 }
  25.                 finally
  26.                 {
  27.                         try
  28.                         {
  29.                                 fr.close();
  30.                         }
  31.                         catch(IOException e)
  32.                         {
  33.                                 sop(e.toString());
  34.                         }
  35.                 }
  36.         }
  37.         public static void sop(Object obj)
  38.         {
  39.                 System.out.println(obj);
  40.         }
  41. }
复制代码
/*fr=new FileReader("demo.txt");
          char[] buf=new char[1024];
          int num=0;
                        while((num=fr.read(buf))!=-1)
                        {
                                sop(new String(buf,0,num));
                        }*/
//问下 num=fr.read(buf))!=-1 中num 是fr.read方法返回读取的个数吗? buf是吧这个个数存放到数组中还是把fr.read方法读取的数据放到数组中?
//帮忙解释下这几个关系 谢了

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
其实你把num打印出来你就会知道,它代表的其实就是你每次读到的数据总数,如果你文本文件中有abcde,当你读取出来时num其实就是5,通过这个就可以知道你后面的那个答案我们如果把总数存进数组的话是没有什么意义的,你如果不用循环方式把它一个一个打印出来你就会发现它其实读取到的是ascii码,然后进行转换输出来的 希望对你有所帮助

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
num是fr.read()方法返回的读取数据的个数.也就是buf数组中存储的个数.
buf数组是fr.read()读的数据,是先把数据读到buf数组中,再一次写出去.

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
谢了{:soso_e183:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马