1、InputStream和OutputStream的子类
Java中的InputStream类的子类有:
ByteArrayInputStream
StringBufferInputStream(现在已经过时)
FileInputStream
PipedInputStream
SequenceInputStream
FilterInputStream
OutputStream的子类有:
ByteArrayOutputStream
FileOutputStream
PipedOutputStream
FilterOutputStream
其中FilterInputStream和FilterOutputStream是抽象类,采用的是Decorator模式
2、FilterInputStream和FilterOutputStream
FilterInputStream的子类有:
DataInputStream:用于读取基本数据类型
BufferedInputStream:避免每次想要更多数据时都进行物理性的读取,告诉它在缓冲区里找
LineNumberInputStream:跟踪输入流中的行号
PushbackInputStream:有一个字节的后推缓冲区,以便后推读入的上一个字符。一般不在自己的代码中使用。
FilterOutputStream的子类有:
DataOutputStream
PrintStream
BufferedOutputStream
3、RandomAccessFile
RandomAccessFile用于包含了已知长度记录的文件,能用seek()从一条记录移到另一条;然后读取或修改记录。RandomAccessFile不属于InputStream或OutputStream分层结构中的部分。用getFilePointer()获取当前在文件的什么地方,seek()用于移到文件内的另一个地方,length()判断文件的长度。
4、File
File类既可能表示文件,也可以表示目录,如果要实现过滤,需要实现接口FilenameFilter的方法boolean accept(File dir, String name)。File类也可以获取文件属性,文件删除,目录创建操作。
5、StreamTokenizer
将任何InputStream分割为一系列token。通过nextToken方法获取下一个token,StreamTokenizer有一些静态成员来表示数据类型或者是否结束。
StreamTokenizer.TT_EOF表示没有token
StreamTokenizer.TT_NUMBER:表示数据类型是数字
StreamTokenizer.TT_WORD:表示数据类型是字符串
而其中的成员ttype用来表示当前的数据类型。
StringTokenizer与StreamTokenizer相似,但是用于处理字符串的,在判断是否有token时,是用的方法hasMoreTokens()
6、Reader和Writer类
添加Reader和Writer层次,主要是国际化的需求。老式IO流层次结构只支持8位字节流,不能很好的控制16位unicode字符。原来的流与对应的reader、writer对应关系为
InputStream -> InputStreamReader
OutputStream -> OutputStreamWriter
ByteArrayInputStream -> CharArrayReader
ByteArrayOutputStream -> CharArrayWriter
StringBufferInputStream -> StringReader
无对应的流 -> StringWriter
FileInputStream -> FileReader
FileOutputStream -> FilleWriter
PipedInputStream -> PipedReader
PipedOutputStream -> PipedWriter
FilterInputStream -> FilterReader
FilterOutputStream -> FilterWriter
BufferedInputStream -> BufferedReader
BufferedOutputStream -> BufferedWriter
LineNumberInputStream ->LineNumberReader
PushbackInputStream -> PushbackReader
PrintStream -> PrintWriter
7、I/O重定向
使用System的静态方法
setIn(InputStream)
setOut(PrintStream)
setErr(PrintStream)
8、压缩|解压
涉及的类有
CheckedInputStream GetCheckSum()为输入流产生检验和
CheckedOutputStream GetCheckSum()为输出流产生检验和
InflaterInputStream用于解压类的基础类
ZipInputStream一个InflaterInputStream,解压用zip文件格式保存的数据
GZIPInputStream一个InflaterInputStream,解压用Gzip文件格式保存的数据
DeflaterOutputStream用于压缩类的基础类
ZipOutputStream一个DeflaterOutputStream,将数据压缩成zip文件格式
GZIPOutputStream一个DeflaterOutputStream,将数据压缩成gzip文件格式
9、序列化
Serializable序列化会将对象的所有数据,可以通过设置transient来控制序列化过程,使子对象不序列化。