IO流之三

IO流之三

今天的学习内容主要是字符流与装饰设计模式。

字符流

Reader类的层次:ReaderßInputStreamReaderßFileReader.

FileReader:专门用于处理文件的字符读取流对象。

Writer类的层次:WriterßOutputStreamWriterßFileWriter.

FileWriter:专门用于处理文件的字符写入流对象。

FileReader:

  1,用于读取文本文件的流对象。

  2,用于关联文件文件。

  构造函数:在读取流对象初始化的时候,必须要指定一个被读取的文件。如果该文件不存在会发生FileNotFoundException。

FileReader(String filename);

FileWriter:

1,用于处理文本文件。

2,该类中有默认的编码表,

3,该类中有临时缓冲。

字符留得缓冲区:缓冲区的出现提高了对流的操作效率

原理:将数据进行封装

BufferedWriter:特有方法:newLine();跨平台的换行符。

BufferedReader:特有方法:readLine();一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回。当读到末尾时,返回null。

写入缓冲区对象。

FileWriter fw = new FileWriter("res/save");//文件输出流,创建保存路径

BufferedWriter bw = new BufferedWriter(fw);//建立缓冲区,将字符流fw对象做参传递给缓冲区

String content = ta.getText();//创建字符串content来储存文本ta内写入的内容

bw.write(content);//写入content所储存数据于缓冲区

 

bw.flush();//对缓冲区进行刷新,将数据刷到目的地

 

bw.close();

fw.close();//在此要注意,若没有bw.flush();bw、fw的关闭,要根据流的封装顺序

 

读取缓冲区对象。

BufferedReader br=newBufferedReader(new FileReader(“br.txt”));

String line = null;//按照行的形式取出数据。取出的每一个行数据不包含回车符。

while((line=br.readLine())!=null){

  System.out.println(line);

}

br.close();

LeadLine();方法的原理:

其实缓冲区中的该方法:每一次读到一个字符,先不进行具体操作,先进行临时存储。当读取到回车标记时,将临时容器中存储的数据一次性返回。

代码演习:

 

   public String myReadLine() throws IOException {

      //创建临时容器。

      StringBuildersb = new StringBuilder();

 

      //循环的使用read方法不断读取字符。

      int ch = 0;

      while ((ch = r.read()) != -1) {

          if (ch == '\r')

             continue;//当读取到的字符为“\r”时,继续读取

          if (ch == '\n')//当读取到的字符为“\n”即换行符时,返回之前读取到的字符串。

             return sb.toString();

          else

             sb.append((char) ch);//添加字符

      }

      if (sb.length() != 0)

          return sb.toString();

      return null;

   }

装饰设计模式

 装饰设计模式,就我理解:组合,方法的组合。

通过以下模式模型来进行一下解释:

 

装饰模式

M//基本数据对象

 |--M1//简单功能1

 |--M2//简单功能2

 |--M3//简单功能3

A B      : new M2(M1)//功能组合(12)

A C      : new M3(M1) //功能组合(13)

B C      : new M3(M2) //功能组合(23)

A B C    : new M3(M2(M1)) //功能组合(123)

 

装饰模式较通过类的继承来讲,优点是:灵活地实现对象功能的扩展,且较好的防止了子类数量快速膨胀,有利于程序的优化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值