博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java当中的IO(三)
阅读量:5085 次
发布时间:2019-06-13

本文共 3474 字,大约阅读时间需要 11 分钟。

1. 处理流的使用实例

2. 装饰者(Decorator)模式

3. 节点流与处理流的关系

 

1. 处理流的使用实例

    BufferedReader处理流介绍

         public String readline()  throws IO Exception

     对于下面这样的文件, 每一行都是关于一个人的信息, 这种情况每次读一行是非常方便的

        张三 F 20

        李四 M 21

        王五 F 22

        赵六 M 23

   BufferedReader使用方法

           生成BufferedReader对象的方法

                 BufferedReader in = new BufferedReader(newFileReader("foo.in"));

   BufferedReader处理流使用之前必须要有一个节点流

           new BufferedReader(newFileReader("foo.in"));实际是将节点流传递给处理流

1 import java.io.*; 2  3 class Test{ 4     public static void main(String args []){ 5         FileReader fileReader = null ; 6         BufferedReader bufferedReader = null ; 7         try{ 8             fileReader = new FileReader("e:/Java/src/IO3/from.txt"); 9             bufferedReader = new BufferedReader(fileReader);10             String line = bufferedReader.readLine();11             System.out.println(line);12         }13         catch(Exception e){14             System.out.println(e);15         }16         finally{17             try{18                 bufferedReader.close();19                 fileReader.close();20             }21             catch(Exception e){22                 System.out.println(e);23             }24         }25     }26 }

               

1 import java.io.*; 2  3 class Test{ 4     public static void main(String args []){ 5         FileReader fileReader = null ; 6         BufferedReader bufferedReader = null ; 7         try{ 8             fileReader = new FileReader("e:/Java/src/IO3/from.txt"); 9             bufferedReader = new BufferedReader(fileReader);10             String line = null;11             while(true){12                 line =  bufferedReader.readLine();13                 if (line == null) break;14                 System.out.println(line);15             }            16         }17         catch(Exception e){18             System.out.println(e);19         }20         finally{21             try{22                 bufferedReader.close();23                 fileReader.close();24             }25             catch(Exception e){26                 System.out.println(e);27             }28         }29     }30 }

               

 

2. 装饰者模式

          

          简化集成体系, 使用装饰者模式

          A公司规定工人进门要说“你好”

          B公司规定工人进门要穿鞋套

          以前定义一个工人的接口, 在分别建4个类, A水管工, A木匠, B水管工, B木匠...这样多几个公司就会越来越庞大

 1 interface Worker{ 2 public void doSomeWork(); 3 } 

1 class Carpenter implements Worker{2     public void doSomeWork(){3         System.out.println("修理门窗");4     }5 }
1 class Plumber implements Worker{2     public void doSomeWork(){3         System.out.println("修理水管");4     }5 }
1 class AWorker implements Worker{ 2     private Worker worker ;  //Workwe类型的成员变量 3     public AWorker(Worker worker){   4         this.worker = worker ; 5     } 6     public void doSomeWork(){ 7         System.out.println("你好"); 8         worker.doSomeWork(); 9     }10 }
1 class Test01{2     public static void main(String args []){3         //生成一个A公司水管工对象4         Plumber plumber = new Plumber();5         AWorker aWorker = new AWorker(plumber);6         aWorker.doSomeWork();7     }8 }

      

这样做的好处在哪呢 , 假如我们要A木匠工作

1 class Test01{ 2     public static void main(String args []){ 3         //生成一个A公司水管工对象 4         Plumber plumber = new Plumber(); 5         AWorker aWorker = new AWorker(plumber); 6         aWorker.doSomeWork(); 7          8         Carpenter carpenter = new Carpenter(); 9         AWork awork2 = new AWorker(carpenter);10         aWorker2.doSomeWork();11     }12 }

         

避免了继承结构, 这样就简化了模式

         

              AWorker叫做装饰者

              Carpenter, Plumber叫做 被装饰者

              装饰者 可以给被 装饰者 加些功能.

              将 被装饰者 参数传递 给 装饰者

转载于:https://www.cnblogs.com/iMirror/p/3741251.html

你可能感兴趣的文章
C#开发微信门户及应用(1)--开始使用微信接口
查看>>
乐在其中设计模式(C#) - 代理模式(Proxy Pattern)
查看>>
WCF发布由于不支持asp.net兼容性而导致服务无法激活启用
查看>>
VS2012 快捷键 VS Resharper 设置
查看>>
maven(17)-自动发布到远程linux服务器
查看>>
Android之四大组件、六大布局、五大存储
查看>>
随机生成题目运算
查看>>
【算法导论】第7章快速排序
查看>>
SPP-Net、Atrous Convolution以及ASPP by Rose
查看>>
Windows Server 2008及以上系统磁盘无法查看(About UAC and ACE)
查看>>
H3c 配置ssh acl
查看>>
java.security.InvalidKeyException: Illegal key size
查看>>
http://www.opensymphony.com/
查看>>
linux网络监控脚本
查看>>
HBase ElasticSearch
查看>>
磁盘IO性能监控(Linux 和 Windows)
查看>>
第三部分 :简单句的补充(并列句)
查看>>
启动apache 找不到 mbstring.dll
查看>>
关于Lua中的out和ref
查看>>
文本域提示文字的设置
查看>>