Java IO系统详细解析(高度样式化)
来源:互联网 发布:朗读软件 编辑:程序博客网 时间:2024/05/29 12:58
Java的IO系统是用来进行输入和输出的,Java系统本身提供了非常丰富的类库,利用这些类库几乎可以进行一切的IO操作,但要彻底弄明白这些类的用法和它们之间的关系却并还容易,笔者总结了一些学习Java IO的思路,希望对大家能有帮助。
一 Input、Output、Read、Write、Stream的含义
很多时候在Java中使用IO的时候,都是这几个关键字交叉混合使用,一不小心就容易弄迷,要明这四个关键字,就要把握住一点,Java中IO的所有操作就是两类,输入和输出,而所谓的输入、输出都是站在程序的角度而言的。
比如要通过一个程序,往硬盘中写入一个文件,对程序而言,肯定是程序在源源不断的把数据往硬盘上放,对程序而言它是在Output,也就是在往出Write,所以Output总是Write对应,表达的是输出的意思。
反过来,要通过一个程序把内存中的数据取出来,那么程序要做的工作就是源源不断的把内存中的数据往外拿,就要不断的去读,从程序的角度看,是有数据不断的往程序里放,这样就是Input,它在Input的时需要不断的Read,所以Input总是Read对应。
Stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的Stream都包括Input和Output两种类型。
二 Java IO的分类
二.1 对IO的分类
所有Java IO都可以分成两类
l 输入流
l 输出流
二.2 对输入输出的分类
所有的输入流、输出流都可以分为字节(输入、输出)流,字符(输入、输出)流,处理字节的主要是(OutputStream/InputStream) 系列,处理字符的,主要是(Reader/Write)系列。
二.2.1 面向字节(Byte)的输入流(InputStream系列):
1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用
2) StringBufferInputStream:把一个String对象作为InputStream
3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作
4) PipedInputStream:实现了pipe的概念,主要在线程中使用
5) SequenceInputStream:把多个InputStream合并为一个InputStream
二.2.2 面向字节(Byte)的输出流(OutputStream系列):
1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中
2) FileOutputStream:把信息存入文件中
3) PipedOutputStream:实现了pipe的概念,主要在线程中使用
4) SequenceOutputStream:把多个OutStream合并为一个OutStream
二.2.3 面向Unicode字符的输入流(Reader系列):
1) CharArrayReader:与ByteArrayInputStream对应
2) StringReader:与StringBufferInputStream对应
3) FileReader:与FileInputStream对应
4) PipedReader:与PipedInputStream对应
二.2.4 面向Unicode字符的输出流(Write系列):
1) CharArrayWrite:与ByteArrayOutputStream对应
2) StringWrite:无与之对应的以字节为导向的stream
3) FileWrite:与FileOutputStream对应
4) PipedWrite:与PipedOutputStream对应
二.3 对流进行包装的流(Filter系列)
二.3.1 输入系列:
二.3.1.1 用于包装InputStream的流
1) DataInputStream:从Stream中读取基本类型(int、char等)数据。
2) BufferedInputStream:使用缓冲区
3) LineNumberInputStream:会记录input stream内的行数,然后可以调用getLineNumber()和setLineNumber(int)
4) PushbackInputStream:很少用到,一般用于编译器开发
二.3.1.2 用于包装Reader的Reader
1) 没有与DataInputStream对应的Reader
2) BufferedReader:与BufferedInputStream对应
3) LineNumberReader:与LineNumberInputStream对应
4) PushBackReader:与PushbackInputStream对应
二.3.2 输出系列
二.3.2.1 用于包装OutputStream的流
1) DataIOutStream:往stream中输出基本类型(int、char等)数据。
2) BufferedOutStream:使用缓冲区
3) PrintStream:产生格式化输出
二.3.2.2 用于包装Write的Writer
1) BufferedWriter:与BufferedOutStream对应
2) PrintWriter:与 PrintStream对应
三 一个特殊的类:RandomAccessFile
针对这个类,记住以下几点:
1) 可通过RandomAccessFile对象完成对文件的读写操作
2) 在产生一个对象时,可指明要打开的文件的性质:r,只读;w,只写;rw可读写
3) 可以直接跳到文件中指定的位置
四 总结
四.1 节点流类型
一根管直接插到下面的类型上,下面的管道指的是线程和线和之间的通讯。
四.2 分类表
类型
字符流
字节流
磁盘文件
FileReader
FileInputStream
FileWriter
FileOutputStream
内存数组
CharArrayReader
ByteArrayInputStream
CharArrayWriter
ByteArrayOutputStream
内存字符串
StringReader
StringWriter
管道
PipedReader
PipedInputStream
PipedWriter
PipedOutputStream
四.3
缓冲流要“套接”在相应的读写流之上,对读写的数据提供了缓冲的功能,提高了读写的效率。对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使其的数据立刻写出。
四.4 转换流
InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间的转换
InputStreamReader需要和InputStream"套接"
OutputStreamReader需要和OutputStream"套接"
- Java IO系统详细解析(高度样式化)
- Java IO系统详细解析
- JDK之java.io.File类 超~详细解析
- 详细介绍Java语言中的IO系统(1)
- Java IO详细介绍
- 详细解读java IO
- java io详细解答
- java io 详细解释
- Java IO系统(上)
- java常用类解析二:IO系统输入输出类
- java常用类解析三:IO系统装饰类
- java常用类解析三:IO系统装饰类
- java常用类解析二:IO系统输入输出类
- ERP系统BOM详细解析(一)
- ERP系统BOM详细解析(一)
- ERP系统BOM详细解析(一)
- UIBarButtonSystemItem 系统默认样式解析
- java IO流解析(一)
- 三十岁前不要去在乎的29件事 【转】
- Samba PDC 服务器安装笔记
- sybase卸载脚本
- lose yourself -- Eminem
- Oracle 数据库管理员的任务
- Java IO系统详细解析(高度样式化)
- 数组与指针
- 我又回来啦!
- Mysql 选择合适的数据类型
- 经典背包问题 POJ 3624
- 将第三方jar包装成插件需要注意的问题
- 你为什么是你自己
- HttpClient 学习整理 (转)
- Fedora Linux 安装USB摄像头驱动