- Java io中最重要的就是5个类和1个接口:
5个类:File、OutputStream、InputStream、Writer、Reader
1个接口:Serializable
- File类是针对文件本身的操作,如果要对文件内容进行操作,需要使用RandonAccessFile类,此类属于随机读取类。
- 字节流主要操作byte数据类型,以byte数组为准,主要是InputStream 和 OutputStream类。
- 一个字符等于两个字节,字符流主要有Reader和Writer两个操作类。
- 字节流比字符流会更好一些:因为所有文件在硬盘或在传输的时候都是通过字节的方式进行的,包括图片等都是按照字节的形式存储的,而字符只有在内存中才会形成,所有开发中字节流会用的更广泛一些。
- 转换流是字节流与字符流的转换类。OutputStreamWriter是Writer的子类,将输出的字符流变为字节流。InputStreamReader是Reader的子类,将输入的字节流变为字符流。
- 内存操作流:
ByteArrayOutputStream -- 此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。
ByteArrayInputStream -- 包含一个内部缓冲区,该缓冲区包含从流中读取的字节且支持 mark 和 reset 方法的能力。
一般在生成临时信息时才会使用,且关闭没有作用。
- 管道流主要是可以进行两个线程之间的通信:
PipeOutputStream -- 可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。通常,数据由某个线程写入. PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。
PipeInputStream -- 管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。
- 打印流是输出信息最方便的类:PrintStream和PrintWriter
- System类对IO的支持:System类中有三个常量PrintStream out、PrintStream error和InputStream in
- 缓冲流可以从缓冲区读写内容:
BufferedOutputStream -- 该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统(内部有存储数据的缓冲区)。
BufferedInputStream -- 创建 BufferedInputStream 时,会创建一个内部缓冲区数组。为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。
- 数据操作流与平台无关(主要针对Java基本数据类型的读写操作):
DataOutputStream -- 数据输出流允许应用程序以适当方式将基本Java数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。
DataInputStream -- 从底层输入流中读取基本Java数据类型。
- 合并流主要将两个文件合并成一个文件:
SequenceInputStream -- 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
- 压缩流为了减少传输时数据量提供专门的压缩流:ZipFile、ZipOutputStream、ZipInputStream和ZipEntry。
- 回退流可以把读取进来的某些数据重新退回到输入流中,不需要经过额外的程序去清理不需要的内容:PushbackInputStream 和 PushbackReader。
Git IO code
![](https://images2015.cnblogs.com/blog/420757/201704/420757-20170410215053329-736353752.png)
posted @
2017-04-10 21:51
涣涣虚心
阅读(
126)
评论()
编辑
收藏
举报