• 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”));     //只是一种展示

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

  • 相关阅读:
    Mac 10.13安装telnet
    如何用万用表判断一个12V蓄电池是否没电
    CentOS 7开机不执行/etc/rc.local的解决方法
    华为S5300系列交换机限制特定IP可以登录Web
    Java Bean Validation 最佳实践
    一文说清文本编码那些事
    定义物料组(Material Group)
    kibana 搜索语法
    微服务相关
    Solve Error: nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj)
  • 原文地址:https://www.cnblogs.com/libs5510/p/5229056.html
Copyright © 2020-2023  润新知