zoukankan      html  css  js  c++  java
  • 字节流

     

    IO(Input  Output)流

    IO流用来处理设备之间的数据传输

    Java对数据的操作是通过流的方式

    Java用于操作流的类都在IO包中

    流按流向分为两种:输入流,输出流。

    流按操作类型分为两种:字节流与字符流。 

    字节流可以操作任何数据,字符流只能操作纯字符数据,比较方便。

    IO流常用父类

    字节流的抽象父类

    InputStream ,OutputStream

    字符流的抽象父类:

    Reader , Writer  

    读取文件

    创建FileInputStream对象, 指定一个文件. 文件必须存在, 不存在则会抛出FileNotFoundException

    使用read()方法可以从文件中读取一个字节. 如果读取到文件末尾会读到-1

    读取结束后需要释放资源, 调用close()方法关闭输入流

    写出文件

    创建FileOutputStream对象, 指定一个文件. 文件不存在会创建新文件, 存在则清空原内容. 如果需要追加, 在构造函数中传入true.

    使用write()方法可以向文件写出一个字节.

    写出结束后同样需要调用close()

    拷贝文件

    可以从文件中逐个字节读取, 逐个字节写出, 但这样做效率非常低

    我们可以定义一个数组作为缓冲区, 一次读取多个字节装入数组, 然后再一次性把数组中的字节写出

    使用FileInputStream和FileOutputStream, 逐个字节拷贝

    使用FileInputStream和FileOutputStream, 定义一个大数组(length等于文件大小), 一次性拷贝

    使用FileInputStream和FileOutputStream, 定义一个小数组(例如1024), 多次拷贝

    使用BufferedInputStream和BufferedOutputStream内置的缓冲区, 逐个字节拷贝

    常用方法
      InputStream:
       read()               读取一个字节
       read(byte[])         读取若干(数组长度)字节
       available()          获取可读的字节数
       close()              关闭流, 释放资源
      OutputStream:
       write(int)            写出一个字节
       write(byte[])         写出数组中的所有字节
       write(byte[],start,len);
       close()               关闭流, 释放资源                    
    

     BufferedInputStream
      BufferedInputStream内置了一个缓冲区(数组)
      从BufferedInputStream中读取一个字节时
      BufferedInputStream会一次性从文件中读取8192个, 存在缓冲区中, 返回给程序一个
      程序再次读取时, 就不用找文件了, 直接从缓冲区中获取
      直到缓冲区中所有的都被使用过, 才重新从文件中读取8192个

    BufferedOutputStream
      BufferedOutputStream也内置了一个缓冲区(数组)
      程序向流中写出字节时, 不会直接写到文件, 先写到缓冲区中
      直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里

    总结:

    在字节流中什么文件都可以读取

    所有的文件都是通过0101的数据进行转换而得到的

    缓冲区是为了提高字节传输的效率

     

  • 相关阅读:
    网络知识 ACL NAT IPv6
    const用法
    单向链表排序
    文件系统
    protel DXP的类矢量图功能
    proteus画元件
    SD卡FAT32文件系统格式
    如何实现一个malloc函数
    sbrk and coreleft
    windows下常用快捷键
  • 原文地址:https://www.cnblogs.com/sooper/p/3415931.html
Copyright © 2011-2022 走看看