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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lucy198921 中级黑马   /  2013-4-2 20:08  /  1657 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

O流中的PushbackReader 和PushbackInputStream这两个类的用法,有些疑惑?

import java.io.FileReader;
import java.io.IOException;
import java.io.PushbackReader;
public class PushbackTest {

public static void main(String[] args) throws IOException {
try(
  PushbackReader pr = new PushbackReader(new FileReader("f:\\io\\a.txt"),64)) //这里应该是java7的自动关闭流动作
{
  char[] buf = new char[32];
  
  String lastContent = "";
  int hasRead = 0;
  while((hasRead = pr.read(buf)) != -1) //读取文件
{
   //将读取内容转换字符串
   String content = new String(buf,0,hasRead);
   int targetIndex = 0;
   
    if((targetIndex = (lastContent + content).indexOf("new PushbackReader")) !=-1 ) //如果包含“new pushbackReader”
   {
    pr.unread((lastContent + content).toCharArray());
    int len = targetIndex > 32 ? 32 : targetIndex;  
    pr.read(buf,0,len);
    System.out.println(new String(buf,0,len));  
    System.exit(0);
   }else
   {  //如果不包含
    System.out.println(lastContent);
    lastContent = content;
   
   }
   
  }
  
}
catch(IOException ioe){
  ioe.printStackTrace();
}

}
}


评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

1 个回复

倒序浏览
Reader和InputStream的区别:Reader是字符流,InputStream是字节流。字符流使用了缓冲区,而字节流没有使用缓冲区。 如果一个程序频繁地操作一个资源,则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域(缓冲区)之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能。所以,一般选择字符流会更快{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

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