原创

【每天十分钟JAVA快速入门】(十九)IO流


流的概念很形象,就如同河流一样,从水源开始自西向东最终流入大海。我们这里讨论的流就是把水换成数据,流就是一种数据传输的形式。

分类
根据处理数据的类型可分为字节流和字符流。
根据数据流向可分为输入流和输出流。
IO流
字节流
输入流
InputStream
输出流
OutputStream
字符流
输入流
Reader
输出流
Writer

字节流和字符流
字节流以字节(8bit)为单位进行读写,每次读写一个字节的数据,可处理任意类型的数据包括文本、图片、视频、音频等。
字符流以字符为单位进行读写,实际上也是基于字节的,只是根据字符编码一次读写多个字节,适合处理纯文本数据。

输入流和输出流
一句话:输入流只能读取,输出流只能写入。

InputStream
InputStream是所有字节输入流的父类,是一个抽象类。常用的两种实现类是ByteArrayInputStream和FileInputStream,从命名就可以看出它们分别从Byte数组和文件中读取数据。

OutputStream
OutputStream是所有字节输出流的父类,也是一个抽象类。常用的两种实现类是ByteArrayOutputStream和FileOutputStream,与字节输入流相对应地分别往Byte数组和文件中写入数据。

Reader
Reader 是所有的输入字符流的父类,它是一个抽象类。常用的两种实现类是CharArrayReader、StringReader,它们分别从char数组、String中读取数据。
上面我们提到字符流实际上也是基于字节的,InputStreamReader完成了从字节到字符的转换。

Writer
Writer是所有的输入字符流的父类,它也是一个抽象类。常用的两种实现类是CharArrayWriter、StringWriter,它们分别向char数组、String中写入数据。
OutputStreamWriter完成了从字符到字节的转换。

File与RandomAccessFile
这两种类在使用IO流时会经常使用到。
File类是对文件以及文件夹进行封装的类。
RandomAccessFile类只能操作文件,可以指定数据在文件中的读写位置,可以用于多线程下载或多线程同时写数据到文件。

正文到此结束