Java编程那些事儿91——装饰流利用2
当前位置:以往代写 > JAVA 教程 >Java编程那些事儿91——装饰流利用2
2019-06-14

Java编程那些事儿91——装饰流利用2

Java编程那些事儿91——装饰流利用2

11.3.3.2 BufferedReader/BufferedWriter

在举办IO操纵时,除了成果以外,措施的执行效率也是必需要思量的问题。根基的IO类只是注重成果的实现,譬喻将特定的数据源转换为流工具,而没有过多的存眷读写的效率问题,而实际在举办项目开拓时,读写效率也是必需要思量的问题。

为了提高IO类的读写效率,在装饰流中专门建造了一类缓冲流,该类流的浸染就是提高流的读写效率,这组缓冲流包括:BufferedInputStream/BufferedOutputStream、BufferedReader/BufferedWriter。

该部门以BufferedReader/BufferedWriter为基本举办先容。

由于前面先容DataInputStream/DataOutputStream时,是以文件流作为实体流举办先容,这里就不再反复了,这里以前面先容的吸收节制台输入为基本先容缓冲输入流的利用。

由于装饰流在举办嵌套时,只能嵌套沟通范例的流,譬喻InputStream范例的流之间可以嵌套,可是InputStream和Reader两个别系之间的流就无法直接嵌套,为了利用新的IO类带来的特性,在IO类中提供了两个专门的类,实现体系之间的转换,这两个流类被形象的称为“桥接流”。

桥接流主要包括2个,依次是:

1、InputStreamReader

该类实现将InputStream及其子类的工具转换为Reader体系类的工具,实现将字节输入流转换为字符输入流。

2、OutputStreamWriter

该类实现将OutputStream及其子类的工具转换为Writer体系类的工具,实现将字节输入流转换为字符输入流。

这两个桥接流使得字节约可以被转换为字符流,可是需要留意的是,字符流无法转换为字节约。

在读取节制台输入时,直接利用System.in举办读取,固然在成果上可以实现,可是这种方法读写流的效率较量差,所以在实际利用时一般需要提高读写的效率,这就需要利用装饰流中的缓冲流,这是一个典范的流的嵌套的示例。该代码实现的成果是假如回显用户输入,当用户输入quit时措施退出。该示例的代码如下:

import java.io.*;
/**
* 利用BufferedReader读取节制台输入
*/
public class ReadConsoleWithBuffer {
 public static void main(String[] args) {
  BufferedReader br = null;
  String s = null;
  try{
    //利用流的嵌套结构缓冲流
    br = new BufferedReader(
    new InputStreamReader(System.in));
    do{
     //输出提示信息
     System.out.println("请输入:");
     //按行读取输入
     s = br.readLine();
     //输出用户输入
     System.out.println(s);
    }while(!s.equals("quit"));
  }catch(Exception e){
    e.printStackTrace();
  }finally{
    try{
      br.close();
    }catch(Exception e){
      e.printStackTrace();
    }
  }
 }
}

在该示例代码中,首先利用流的嵌套构建了BufferedReader范例的工具br,然后利用BufferedReader中的readLine要领,每次读取用户输入的一行信息,利用readLine要领读取内容时,系统以”\r\n”作为每次的竣事标记,并且读取的内容不包括”\r\n”,当读取到流的末端时readLine要领的返回值是null。然后利用do-while轮回判定用户输入的是否是quit,假如输入的是quit,则措施竣事,不然继承下一次轮回。

关于BufferedWriter的利用,没有什么出格的处所,这里就不光独举例说明白。

11.3.3.3 装饰流小结

前面先容了两类较量常见的装饰流,在实际的开拓中,按照逻辑的需要还大概会用到其它的装饰流,这些装饰流的利用和前面先容的类雷同,在实际利用时通过查阅JDK API文档找到按照成果找到符合的装饰流,然后举办利用即可。

    关键字:

在线提交作业