首页 > 代码库 > 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可以单独使用,只是读写数据比较固定,不如自己组装的流灵活。

 

Java总结——文件&流