Java中的字节流体系

知识模块:
一.IO流概述:
二.IO体系
    1.字节流体系
      a.OutputStream:字节输出(写入)流
      b.成员方法
      c.续写和写入换行
      d.高效字节输入流

详细代码在下方gitte链接中 Day23
JavaSE: Java基础






一.IO流概述:
   I:Input: 从硬盘上读取数据到java程序(内存)  硬盘 =》 内存   (读取)
   O:Output:将java程序中的数据写入到硬盘      内存 =》硬盘    (写入)

二.IO体系
  1.字节流体系
    a.OutputStream:字节输出(写入)流
       FileOutputStream:将数据写入文件
          a.构造方法
               FileOutStream类:
                   构造方法:
                      FileOutputStream(String name)
                         name:传入一个文件路径
                         1.如果传入的文件路径在硬盘中不存在,那么该构造方法会抛出  java.io.FileNotFoundException
                         2.如果传入的文件路径在硬盘上存在而且该路径下没有该文件,那么该构造方法会为我们创建一个空白文件
                         3.如果传入的文件路径在硬盘上存在而且该路径下已有该文件,那么该构造方法会清空该文件内容

                         创建一个向具有指定名称的文件中写入数据的输出文件流。

                   成员方法:
                      void write(int b)
                         将指定字节写入此文件输出流。
                      void close()
                         关闭此文件输出流并释放与此流有关的所有系统资源。

                   通过FileOutputStream向文件中写内容的步骤:
                     1.通过输出流关联一个文件1.txt
                     2.通过write方法向1.txt中写字节
                     3.关流释放资源
                     4.写动作一定是在close之前,因为close关流之后,底层的IO资源已经释放,无法再使用
          b.成员方法
               FileOutStream类:
                  成员方法
                     void write(byte[] b)
                         将 b.length 个字节从指定 byte 数组写入此文件输出流中。
                     void write(byte[] b, int off, int len)
                         将指定的字节数组(b),从off索引开始,写入len个字节,(包含off索引处的字节)

                 String类中的方法
                     byte[] getBytes()
                         使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
          c.续写和写入换行
               FileOutStrean构造方法:
                   FileOutputStream(String name, boolean append)
                         当第二个参数为true的时候write会不断往文件末尾追加
                         当第二个参数为false的时候,每次执行构造方法都会清空文件内容

                   如果想让文件中的内容换行,我们需要向文件中写入换行符
                   不同操作系统换行符也不同
                   widows:\r  \n
                   linux:  \n
                   mac os: \r


    b.Inputstream :字节输入(读取)流
       FileInputStream
           a.构造方法
               FileInputStream构造方法
                   FileInputStream(String name)
                         FileInputStream读取硬盘上已经存在的文件,如果文件不存在,抛出异常 java.io.FileNotFoundException: Day23\5.txt (系统找不到指定的文件。)

                   成员方法:
                       int read()
                         从此输入流中读取一个数据字节。

                       void close()
                         关闭此文件输入流并释放与此流有关的所有系统资源。
           b.成员方法
               FileInputStream成员方法
                      int read(byte[] b)
                         1.从文件中读取尽可能多的字节,去装到字节数组中去,0索引存放文件第一个字节,以此类推
                         2.返回值代表每次从文件中读取的字符个数

                String类的构造方法
                   String(byte[] bytes)
                         通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。

           c.拷贝文件案例
                利用字符数组拷贝图片
                利用字节输入和字节输出可以拷贝计算机中任意文件,因为计算机中所有的文件都是以字节的形式存储的

    c.高效字节输出流
          BufferedOutputStream类:
                该类实现缓冲的输出流,缓冲的目的就是为了提高写效率
          构造方法:
               BufferedOutputStream(OutputStream out)
                    创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

          成员方法:
               void flush()
                    刷新此缓冲的输出流。
               public void write(byte[] b)
                    将 b.length 个字节写入此输出流。
               void write(byte[] b, int off, int len)
                    将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此缓冲的输出流。
               void write(int b)
                    将指定的字节写入此缓冲的输出流。

            BufferedOutputStream原理:
                他底层其实会开辟一个默认长度为8192字节数组,为了提高效率
                但是我们write()方法会把字节写入到底层字节数组中,只有通过刷新或者关流,才能将字节数组中的字节刷到文件中去

    d.高效字节输入流
          BufferedInputStream
            构造方法
                BufferedInputStream(InputStream in)
                    创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
            成员方法
                 int read()
                    参见 InputStream 的 read 方法的常规协定。
                 public int read(byte[] b)
                   throws IOException从此输入流中将 byte.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。

            BufferedInputStream底层也会开辟一个默认长度为8192的字节数组,将来读到数据都会存储到这个字节数组中去

  2.字符流体系
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值