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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘晓康 中级黑马   /  2012-4-5 20:27  /  3459 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

FileReader  fr = new FileReader("DateDemo.java");
char[] buf = new  char[1024];
int num = 0;

while((num=fr.read(buf))!=-1)
      {
        System.out.print(new String(buf,0,num));
      }

        fr.close();

上面代码中 fr.read(buf)过程中 比如说 读到第一行没有了 会读取一个换行符打印 还是怎么样 要不print打印出来都变成一行了?

4 个回复

倒序浏览
FileReader  fr = new FileReader("DateDemo.java");
char[] buf = new  char[1024];     这是你自己定义一个数组缓冲区  大小为1024字节的
int num = 0;

while((num=fr.read(buf))!=-1)   read一次读取一个字符   依次的添加到数组缓冲区中,如果要读取的文本没有到读取完时,数组添加满了,则返回数组的长度,此时,打印
   {                                          一次数组,继续read读取字符  还是一次添加到数组且从数组开始处添加,当读取的字符为最后一个字符时,在读取下一个时没有字符了
      System.out.print(new String(buf,0,num));   此时就返回-1  打印数组中的字符,并返回结果-1  循环结束
      }

        fr.close();

回复 使用道具 举报
输入流读取的时候会把该位置换行符也会读取进去,再通过输出流在同样位置写出来。所以打印的内容格式与要读取的内容格式相同
BufferedReader 的readLine() 方法 是整行整行的读取,换行符是每行结束的标志,读取的时候读取一整行的内容,但是不包括换行符。
回复 使用道具 举报
FileReader  fr = new FileReader("DateDemo.java");
char[] buf = new  char[1024];
int num = 0;

while((num=fr.read(buf))!=-1)//read ()在读取时是会判断的,只要读到\r\n就会换行的
       {
         System.out.print(new String(buf,0,num));
       }

        fr.close();
回复 使用道具 举报

FileReader  fr = new FileReader("DateDemo.java");
char[] buf = new  char[1024];
int num = 0;

while((num=fr.read(buf))!=-1)//read方法一次读取一个字符,并存入字符数组之中,读到换行符时,同样是存储到自定义的字符数组之中,直到字符数组存满为止,此时//再将字符数组中的字符一次性打印,字符数组指针归0,然后进行下一轮的循环,在最后一行,不足1024个字符时,num是返回字符中数组存储的个数,此时数组后面存储的是//null,然后将字符数组中该长度的字符打印。
      {
        System.out.print(new String(buf,0,num));
      }

        fr.close();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马