Java输入输出
java的输入输出相关的类,几乎全部都集中在java.io包中
Java输入输出流总览:
java中的输入输出类库采用了装饰者模式(关于装饰者模式不再赘述
):
InputStream
Component:InputStream。
Concrete Component:ByteArray、File、Piped、StringBufferInput。
Decorator:FilterInputStream子类、Object、SequenceInputStream。
InputStream:
方法
解释
available
返回可提供字节数
close
关闭字节流
read
从字节流中读出
reset
重置到上一个标记位
skip
跳过
mark
标记(参数代表标记失效前最大能读的字节数)
部分InputStream(流来自于内存)的close方法没有意义,如ByteArrayInputStream
mark的参数指定的字节数之后,可能失效,也可能有效(ByteArrayInputStream)。最好按失效处理。
具体部件:
具体部件(省略InputStream)
解释
ByteArray
以字节数组为源
File
以文件为源
Piped
以PipedOutputStream为源、常用于多线程、提供connect方法
StringBuffer
弃用
装饰类:
装饰类(省略InputStream)
解释
Filter
过滤。将InputStream作为源流,装饰后添加其他功能。
Buffered
使用缓冲区进行读取(没有改变InputStream语义,只是实现不同)。
Data
提供了读取各种基本类型(int、byte、甚至utf)的功能。
LineNumber
弃用。
Pushback
提供unread功能。
Object
提供readObject功能(反序列化)。
Sequence
提供将两个流合并的功能。
OutputStream
Component:OutputStream
Concrete Component:ByteArray、File、PipedOutputStream。
Decorator:FilterInputStream子类、ObjectOutputStream。
OutputStream:
方法
解释
write
向流写入
close
关闭流
flush
刷新流(将buffer写入目的地)
具体部件:
具体部件(省略OutputStream)
解释
ByteArray
以字节数组为汇集
File
以文件为汇集
Piped
以PipedInputString为汇集
装饰类:
装饰类(省略OutputStream)
解释
Filter
过滤,将输出流过滤添加新的特性
Buffered
不改变OutputStream的语义,只是实现不同
Data
提供了各种写基本类型的方法(甚至包括UTF)
PrintStream
提供各类print方法
Object
提供了writeObject方法
Reader
Component:Reader。
Concrete Component:CharArray、InputStreamReader、PipedReader、StringReader。
Decorator:BufferedReader子类、FilterReader子类。
Reader:
方法
解释
read
读
reset
重置标记
ready
测试是否准备好
close
关闭
mark
标记
skip
跳过
具体部件:
部件
解释
CharArray
以字符数组为源
InputStream
以InputStream为源
File
以文件为源
Piped
以PipedWriter为源
String
以String为源
装饰类:
装饰
解释
Buffered
通过缓存行实现,提供行读取方法
LineNumber
继承BuffedReader,提供行号相关功能
Pushback
提供pushback
Writer
Component:Writer。
Concrete Component:CharArray、OutputStream、Piped、StringWriter。
Decorator:Buffered、Filter、PrintWriter。
Writer:
方法
解释
append
追加、返回Writer、和write无甚区别
close
关闭流
flush
刷新流(buffer刷新)
write
写入流
具体部件:
部件
解释
CharArray
以字符数组为汇集
OutputStream
以OutputStream为汇集
File
以文件为汇集
Piped
以PipedReader为汇集
String
以String为汇集
装饰类:
装饰
解释
Buffered
提供缓冲写,按行缓存提供newLine方法
Filter
抽象类。过滤流
PrintWriter
打印流。提供一系列print方法。
Scanner
Scanner类是java.util包中封装的一个读取输入数据的工具类。
它是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
提供以下方法:
方法
解释
close
关闭
delimiter
返回分隔符
useDelimiter
设置分隔符
locale
返回语言环境
useLocale
设置语言环境
radix
返回进制
useRadix
设置进制
match
正则匹配
toString
返回String
next、next*、nextLine
读取下一个,紧接着的文本不匹配会抛出异常
hasNext、hasNext*、hasNextLine
检测下一个
remove
不支持(来自于迭代器接口)
findInLine、findWithinHorizon
本行匹配正则、horizon(右边界)之前匹配
skip
跳过
reset
重置
Reference