290、Java中级07 - 【I/O】 2020.01.11

0、目录

    • 1、文件和文件夹都是用File代表
    • 2、什么是流Stream?
    • 3、字节流
    • 4、字符流
    • 5、缓存流
      • 5.1 使用缓存流读取数据
      • 5.2 使用缓存流写出数据
      • 5.3 flush
    • 6、数据流
    • 7、对象流
    • 8、System.in
    • 9、参考链接

1、文件和文件夹都是用File代表

2、什么是流Stream?

流就是一系列的数据

当不同的介质之间有数据交互的时候,JAVA就使用流来实现。
数据源可以是文件,还可以是数据库,网络甚至是其他的程序

比如读取文件的数据到程序中,站在程序的角度来看,就叫做输入流
输入流: InputStream
输出流:OutputStream

3、字节流

InputStream字节输入流
OutputStream字节输出流
用于以字节的形式读取和写入数据

4、字符流

Reader字符输入流
Writer字符输出流
专门用于字符的形式读取和写入数据

5、缓存流

以介质是硬盘为例,字节流和字符流的弊端:
在每一次读写的时候,都会访问硬盘。 如果读写的频率比较高的时候,其性能表现不佳。

为了解决以上弊端,采用缓存流。
缓存流在读取的时候,会一次性读较多的数据到缓存中,以后每一次的读取,都是在缓存中访问,直到缓存中的数据读取完毕,再到硬盘中读取。

就好比吃饭,不用缓存就是每吃一口都到锅里去铲。用缓存就是先把饭盛到碗里,碗里的吃完了,再到锅里去铲

缓存流在写入数据的时候,会先把数据写入到缓存区,直到缓存区达到一定的量,才把这些数据,一起写入到硬盘中去。按照这种操作模式,就不会像字节流,字符流那样每写一个字节都访问硬盘,从而减少了IO操作

5.1 使用缓存流读取数据

缓存字符输入流 BufferedReader 可以一次读取一行数据

5.2 使用缓存流写出数据

PrintWriter 缓存字符输出流, 可以一次写出一行数据

5.3 flush

有的时候,需要立即把数据写入到硬盘,而不是等缓存满了才写出去。 这时候就需要用到flush

6、数据流

DataInputStream 数据输入流
DataOutputStream 数据输出流

7、对象流

对象流指的是可以直接把一个对象以流的形式传输给其他的介质,比如硬盘
一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口

8、System.in

System.out 是常用的在控制台输出数据的
System.in 可以从控制台输入数据

9、参考链接

【01】How2j - IO系列

你可能感兴趣的:(Java,I/O,Java中级)