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