zoukankan      html  css  js  c++  java
  • Java 输入输出(一)——流

      Java输入输出大致可以分为两类,流式操作与非流式操作,流式操作主要关注与文件内容的读写,非流式操作主要用于文件在磁盘上的管理。下面首先学习流式数据操作。

      与c++类似,java中也提供了流的概念来处理输入输出(I/O)。Java中,可以从其中读入一个字节序列的对象称为输入流,可以向其中写入一个字节序列的对象称为输出流。输入输出流都是对象,这一类对象需要绑定特定的字节来源和目的地,可以是标准输入输出(键盘和屏幕),文件或者网络,甚至可以是内存块。

      抽象类InputStream和OutputStream构成了输入输出(I/O)类层次结构的基础。这两个类主要用来处理字节输入输出,即继承了这两个类的子类对象主要是用来处理字节流的。通常情况下,处理字符的需求更为常见,为了处理字符,java中提供了Reader和Writer两个抽象类来处理字符输入输出。

      InputStream类的基础方法是read()方法,这个方法从输入源中读入一个字节,返回值即为读入的字节,返回类型为int。具体从哪种读入源读入取决于具体实现抽象类的具体类型,例如FileInputStream对象从绑定的文件中读入字节,System.in对象从标准输入(键盘)读入字节。InputStream还有其他方法,例如读入一个字节序列,跳过n个字节等。OutputStream类的基础方法是write(int n),用于向输出流中写入一个字节。以这两个抽象类为基础,java中有一个完整的流类家族,用来处理各种各样的输入输出问题。如下图所示:

       

       

      类似于InputStream与OutputStream,Reader与Writer也有两个基本方法,分别是read与write,不同之处在于这两个函数的输出与输入是两字节的Unicode码元,而不是一个字节。同时也有一个完整的类家族来处理各种字符输入输出问题。类层次结构为:

         

       

      输入输出类中有一些通用的方法,例如close,flush等等。这些方法主要是流类通过实现接口获得的,这些接口主要包括closeable,flushable,Readable,Appendable等。

    组合流过滤器

      java中的各种输出输出流类完成各种各样的功能,例如FileInputStream实现文件的流式输入,DataInputStream实现java基本数据类型的输入,它们各自完成自己的功能,其他的流类无法使用其他流类的功能,为了实现各种功能的组合,例如实现利用度基本数据类型的方式读一个文件,此时可以使用:

    FileInputStream fin=new FileInputStream(“file.data”);

    DataInputStream din=new DataInputStream(fin);

    double s=din.readDouble();

      当需要从标准输入中利用直接读java基本数据类型的是,可以使用:

    DataInputStream din=new DataInputStream(System.in);

    double s=din.readDouble();

      利用这种嵌套流过滤器(组合流过滤器)的方式,可以实现组合各种各样的功能。同时还可以用来沟通字节处理流与字符处理流。如下:

    BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(“file.tax”),”UTF-8”));     //只是一种展示

      关于字节流与字符流,字节流可以处理各种各样的文件,例如音频和图片,而字节流只能实现处理文本。

  • 相关阅读:
    cmd查看端口号是否占用
    重新安装安全狗以后,apchpe 启动不了。
    springcloud组件-eureka
    关于mybatis和spring整合后的一级缓存
    SpringCloud理解篇
    mycat的读写分离
    mycat的分库分表
    Linux下mysql服务器配置
    mycat理解
    linux配置mysql
  • 原文地址:https://www.cnblogs.com/libs5510/p/5229056.html
Copyright © 2011-2022 走看看