• Java之I/O流(第1部分)


    Java 中的I/O流:

      1. 输入/输出流原理:

       如下图所示:在 java 程序中,对于数据的输入/输出操作以“流”(Stream)的方式进行;J2SDK 提供了各种各样的“流”类,用来获取不同种类的数据;程序中通过标准的方法输入或输出数据.

      

      2. 输入/输出流的分类:

        2.1 java.io 包中定义了多个流类型(类或者抽象类)来实现输入/输出功能:可以从不同的角度对其进行分类:

         ① 按数据流的方向的不同:输入流、输出流

                  ② 按处理数据单位的不同:字节流、字符流

                  ③ 按其功能的不同:节点流、处理流.

        2.2 J2SDK 提供的所有流类型位于 java.io 内都分别继承以下四种抽象类型:

                  字节流      字符流

          输入流            InputStream           Reader

          输出流           OutputStream          Writer

      3. 节点流、处理流:

        3.1 节点流是一个可以从特定的数据源(节点)读写数据(如:文件、内存)

          

        3.2 处理流是“连接”在已存在的流(节点流、或处理流)之上,通过对数据的处理为程序提供更为强大的读写能力.

                   

      4. InputStream:

        继承自 InputStream 的流都是用于向程序中输入数据,且数据的单位为一个字节(8bit),该类的所有方法在遇到错误时,都会抛出 IOException 异常.

               

        4.1 InputStream 的基本方法:

          4.1.1 int read() throws IOException // 从数据流中读取一个字节,返回 0~255 范围内的 int 字节值;如果返回 -1,则说明已经读到了输入流的末尾;

          4.1.2 int read(byte[] buffer) throws IOException // 读取一系列字节并存储到一个数组 buffer,返回实际读取的字节数;若读取前已经到了输入流的末尾,则返回 -1;

          4.1.3 int read(byte[] buffer,int offset,int length)  throws IOException // 读取 length 个字节,并存储到一个字节数组 buffer,从 offset 位置开始返回实际读取的字节数;若返回 -1,则表示到了输入流的末尾;

          4.1.4 mark(int readLimit)  throws IOException // 在输入流的当前位置放一个标记,readLimit 参数表示此输入流在标记位置失效之前,允许读取的字节数;

          4.1.5 reset() throws IOException // 指针返回当前所做的标记处;

          4.1.6 void close() throws IOException // 关闭流,释放内存资源;

          4.1.7 long skip(long n) throws IOException // 跳过 n 个字节不读,返回实际跳过的字节数;

      5. OutputStream:

        继承自 OutputStream 的流是用于向数据源中输入数据,且数据的单位为一个字节(8bit).

        

        5.1 OutputStream 的基本方法:

          5.1.1 void write(int b) throws IOException // 向输出流中写入一个字节数据,该字节数据为参数 b 的低 8 位;

          5.1.2 void write(byte[] b) throws IOException // 将一个字节类型的数组中的数据写入输出流;

          5.1.3 void write(byte[] b,int offset,int length) throws IOException // 将一个字节类型的数组中从指定位置(offset)开始的 length 个字节写入到输出流;

          5.1.4 void close() throws IOException // 关闭流,释放内存资源;

          5.1.5 void flush() throws IOException // 将输出流中缓冲的数据全部写出到目标文件.

                    【注】:在 close 文件之前,记得 flush 一下,将缓冲区的内容全部写出去.

      6. Reader:

        继承自 Reader 的流都是用于向程序中输入数据(从数据源中读出数据),且数据的单位为一个字符(16bit)

         

         6.1 Reader 的基本方法:

          6.1.1 int read() throws IOException // 读取一个字符,返回 0~255 范围内的 int 字节值;如果返回 -1,则说明已经读到了输入流的末尾;

          6.1.2 int read(char[] buffer) throws IOException // 读取一系列字符并存储到一个数组 buffer,返回实际读取的字符数;若读取前已经到了输入流的末尾,则返回 -1;

          6.1.3 void read(char[] buffer,int offset,int length) throws IOException // 读取 length 个字符,并存储到一个字符数组 buffer,从 offset 位置开始返回实际读取的字符数;若返回 -1,则表示到了输入流的末尾;

          6.1.4 void close() throws IOException // 关闭流,释放内存资源;

          6.1.5 long skip(long n) throws IOException // 跳过 n 个字符不读,返回实际跳过的字符数.

      7. Writer:

        继承自 Writer 的流是用于向数据源中写数据,且数据的单位为一个字符(16bit).

        

        7.1 Writer 的基本方法:

          7.1.1 void write(int c) throws IOException // 向输出流中写入一个字符数据,该字符数据为参数 b 的低 16 位;

          7.1.2 void write(char[] arr) throws IOException // 将一个字符类型的数组中的数据写入输出流;

          7.1.3 void write (char[] arr,int offset,int length) throws IOException // 将一个字符类型的数组中的从指定位置(offset)开始的 length 个字符写入到输出流;

          7.1.4 void write(String str) throws IOException // 将一个字符串中的字符写入到输出流;

          7.1.5 void wriet (String str,int offset,int length) throws IOException // 将一个字符串中从 offset 开始的 length 个字符写入到输出流;

          7.1.6 void close() throws IOException // 关闭流,释放内存资源;

          7.1.7 void flush() throws IOException // 将输出流中缓冲的数据全部写出到目标文件.

  • 相关阅读:
    【转】禁用chrome firefox 的 WebRTC功能防止真实IP泄漏
    这是我的主场
    【转】反编译获取任何微信小程序源码(完)
    【转】npm 安装express npm ERR! code UNABLE_TO_VERIFY_LEAF_SIGNATURE
    查询最新的邮编地区
    【转】汇编语言入门教程
    Microsoft Windows远程桌面协议中间人攻击漏洞(CVE-2005-1794)漏洞解决方案(Windows server2003)
    IIS隐藏版本号教程(Windows Server 2003)
    Windows Server 2003添加防火墙策略教程
    Tomcat禁用SSLv3和RC4算法
  • 原文地址:https://www.cnblogs.com/bosongokay/p/6773843.html
Copyright © 2020-2023  润新知