zoukankan      html  css  js  c++  java
  • Java总结——文件&流

      最近学习了Java的输入输出,脑子里有两点乱,不过比之前的思路好像清晰了很多。脑子刚刚接收这些信息的时候,整个就是懵逼的,又是文件又是流的,文件到底干嘛的,流到底干嘛的?恩,后来,想了想,其实也不难理解嘛。Java里的输入输出其实就像脑袋接收信息。文件就像大脑,是存储接收到的信息的地方;流就是类似声波的东西,耳朵接收到,但是却未必要用大脑(你说的很对,可我就是不听。)

    1. File是什么,RandomAccessFile是什么,又是何时使用呢?

      1)   首先要说明一下File类的作用,File类是IO包中唯一用于表示磁盘文件信息的对象。File类的作用是用于创建文件、删除文件、重命名文件、以及判读文件是否有读取权              限,以及是否存在。File包括目录。

      2)   RandomAccessFile:用于读写文件数据,其基于指针对文件进行读写。常用于文件数据的复制等操作。其中文件的复制,可以通过提高每次读取的数据量来减少读取数             据的次数从而达到提高数据读取的效率。

    2. 流到底指的是什么,有哪些,分别作用是什么呢?

      1)   流的分类。

          a)   从流的方向分为:输入流和输出流。输入是指数据流入程序,输出是指数据从程序流出。

          b)   从流的分工分为:节点流和处理流。

          c)    从流的内容分为:面向字节流和面向字符流。

      2)   几种常用的流:

        a)   文件流:FileInputStream、FileOutputStream,低级流(节点流),分别用于从指定文件读取、写出字节。

        b)   缓冲流:BufferedInputStream、BufferdOutputStream,高级流,能够提高读取效率。

        c)   对象流:ObjectInputStream、ObjectOutputStream,高级流,分别用于对象的反序列化和对象序列化。

            分别对应方法:readObject() 与writeObject(Object o)方法。

            注意:若希望该对象可以被写出,那么前提是该对象所属的类 必须实现Serializable接口。

        d)  转换流:InputStreamReader、OutputStreamWriter。ISR与OSW相当于是 联系字节流与字符流的纽带,类似与转换器的效果。

        e)  缓冲字符流:BufferedReader、PrintWriter(内部使用BufferedWriter实现)。

      注意:字符流虽然是以字符为单位,但是底层实际上还是要以字节形式读写,所以字符流天生就具备将字节转换为字符或字符转换为字节的能力。所以所有的字符流都是高             级流。方便我们读写字符数据。无需再关心字符与字节的相互转换了。

                  低级流经过在外层层组装处理流,形成了功能更加完善效率更高的流。比如文件流在外包装缓冲流之后就可以使得读写效率提高;文件流在外包装一层对象流就可以对         对象进行读写文件的操作。

        处理流一般需要加到节点流上才能发挥作用,但是有的流比如PrintWriter可以单独使用,只是读写数据比较固定,不如自己组装的流灵活。

  • 相关阅读:
    leetcode刷刷刷
    素数问题
    TCP/IP详解(整理)
    关于区块链应用方向与前景的一些思考
    设计模式
    面经中的各种问题汇总
    基于消逝时间量的共识机制(POET)
    c++语言知识点汇总
    二叉树前中后/层次遍历的递归与非递归形式(c++)
    layui表格搜索数据登录失效后的处理
  • 原文地址:https://www.cnblogs.com/FancyLian/p/5824178.html
Copyright © 2011-2022 走看看