IO流,缓冲区,装饰设计模式

本文详细解析了缓冲区原理及其在数据处理中的应用,并深入探讨了reade()与readLine()方法的工作机制。同时,介绍了装饰设计模式在流对象上的应用,以及Properties集合的特点与使用。最后,总结了IO流的使用规律,帮助开发者根据具体需求选择合适的流对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




缓冲区原理:
         临时存储数据的方法。减少对设备操作的频率,提高了效率。其实就是
           对数据临时缓存到了内存(数组)中。

reade()方法原理:
 public int myRead() throws IOException{
      if(cout==0){
        count = r.read(buffer);
           index=0;
  }
   if(count<0){
          return -1;}
    char ch = buffer[index];
    index++;
    count--;
    return ch;

 }

readLine(): 调用了read ();从缓冲区中获取数据存储到readLine自己的缓冲区,

            它会判断终止符,只存储行结束符前的数据。
 
if(ch=='\r')
 continnue;
if(ch=='\n')
  return sb.toString();

readLine()方法原理:
 public String myReadLine() throws IOException{
  StringBuilder sb = new StringBuilder();
   int ch =0 ;
  while((ch=myRead())!=-1){
     if(ch=='\r')
         continnue;
    if(ch=='\n')
        return sb.toString();
 
     sb.append((char)ch);
    }
   if(sb.length()!=0)
          return sb.toString();
   return null;

 }
 
****装饰设计模式(wrapper, Decorator): (BufferedReader,BufferedWriter)
    可以给对象提供额外的功能,比继承方式更灵活。
   装饰类与被装饰类都所属于同一个体系。
   同时装饰类中持有装饰类的引用。

 BufferedReader bufr= new BufferedReader (new InputStream(System.in));

****** Properties
    特点:
        1,Hashtable的子类,map集合中的方法都可以使用。
        2,该集合没有泛型,键值都是字符串。
        3,它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备上
            键值的来源也可以是持久化的设备。

 Properties prop =new Properties();

 prop.list(System.out); // 列出给集合的所有对象,主要用于测试


***IO流的规律总结:  解决的问题,就是开发中具体要使用哪个流对象的问题。
  
1, 明确数据源,数据汇(数据目的)
    其实就是在明确要使用的IO体系。InputStream OutoutStram Reader, Writer

    需求中操作的是源: 意味着是读 。 InputStream Reader
 
    需求中操作的是目的: 意味着写。 OutputStream . Writer

2,操作的数据是否是纯文本数据?
   是,字符流
   否,字节流
 
  是并且是源,Reader
  是并且是目的,Writer

通过前两个明确,明确了具体要使用的体系。

明确体系中要使用哪个对象:
 源设备:
     硬盘,能操作File 的流对象都是,File开头
     键盘,System.in;
      内存: 数组
     网络: socker流
 
目的设备:
    硬盘,能操作File 的流对象都是,File开头
     键盘,System.out
      内存: 数组
      网络: socker流

到第三步明确就可以找到具体的流对象了。

4, 需要额外功能吗?
   需要高效吗? 缓冲区,Buffered开头
   需要编码转换吗? 转换流。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值