Java语言基础:流类(1)
2011-04-05 16:27
483 查看
1. java通过流的概念来实现数据的输入输出,或叫读写更容易理解一些;下面4个类是所有流的基类,分别处理字节和字符的读写:
InputStream: 输入(读)字节流抽象类。
OutputStream: 输出(写)字节流抽象类。
Reader: 输入(读)字符流抽象类。
Writer: 输出(写)字符流抽象类。
2.
上面4个抽象类提供了最基本的读写方法,输入输出流有一个当前位置(Pos)的概念,指定下一次的读写将从流的什么位置开始,调用Read或Write方法时,Pos会同时向后移,移多少依读写多少字节或多少字符而定:
InpuStream:
OutStream:
Reader和Writer和上面的InputStream和OutStream很类似,只不过他们读写的单位是字符,并且提供几个方法读写String的方法。
3.
所有流类都直接或间接继承自上面4个抽象类,并提供不同的功能,下面是常用流类的继承关系:
InputStream
|-ByteArrayInputStream: 字节输入流。
|-FileInputStream: 文件输入流
|-ObjectInputStream: 对象输入流
|-PipedInputStream: 管道输入流
|-FilterInputStream: 过滤输入流
|-BufferedInputStream: 缓存输入流,读出时先缓存。
|-DataInputStream: 数据输入流,读出Java基本数据类型。
OutStream
|-ByteArrayOutputStream: 字节输出流
|-FileOutputStream: 文件输出流
|-ObjectOutputStream: 对象输出流
|-PipedOutputStream: 管道输出流
|-FilterOutputStream: 过滤输出流
|-BufferedOutputStream: 缓存输入流,读出时先缓存。
|-DataOutputStream: 数据输入流,读出Java基本数据类型。
Reader
|-CharArrayReader: 字符读流。
|-StringReader: 字符串读流。
|-PipedReader: 管道读流。
|-BufferedReader: 缓存读流。
|-InputStreamReader: 从字节流读出字符。
Writer
|-CharArrayWriter: 字符写流。
|-StringWriter: 字符串写流。
|-PipedWriter: 管道写流。
|-BufferedWriter: 缓存写流。
|-OutputStreamWriter: 将字符写入字节流。
InputStream: 输入(读)字节流抽象类。
OutputStream: 输出(写)字节流抽象类。
Reader: 输入(读)字符流抽象类。
Writer: 输出(写)字符流抽象类。
2.
上面4个抽象类提供了最基本的读写方法,输入输出流有一个当前位置(Pos)的概念,指定下一次的读写将从流的什么位置开始,调用Read或Write方法时,Pos会同时向后移,移多少依读写多少字节或多少字符而定:
InpuStream:
方法 | 说明 |
public abstract int read() | 从流中读下一个字节,方法返回这个字节,但如果到达流结尾,将返回回-1。 |
public int read(byte[] b) | 从流中读出多个字节,并存到数组b中;期望读出的字节数由数组的长度决定,方法返回的是实际读出的字节,如果已到达结尾将返回-1。 |
public int read(byte[] b, int off, int len) | 从流中读出多个字节,并存到数组b中;期望读出的字节数由len决定,off指定b的偏移,数据将从这个偏移开始保存;方法返回实际读出的字节,如果已到达结尾将返回-1。 |
public void mark(int readlimit) | 标记一个位置,当下一次调用reset时,Pos将被定位到这个位置。 |
public void reset() | 重置Pos到上一次mark指定的位置,默认为0. |
public boolean markSupported() | 是否支持标记 |
public long skip(long n) | 从Pos跳过n个字节,相当于Pos += n。 |
public void close() | 关闭流以释放相关的系统资源,比如文件流,但并不是所有的流类都需要Close。 |
public int available() | 还有多少字节可以读取,相当于: Size - Pos |
方法 | 说明 |
public abstract void write(int b) | 向流写一个字节 |
public void write(byte[] b) | 向流写多个字节 |
public void write(byte[] b, int off, int len) | 向流写多个字节,从数组的off偏移开始写,最多写len个字节。 |
public void close() | 关闭流以释放相关的系统资源,比如文件流,但并不是所有的流类都需要Close。 |
public void flush() | 刷新流,提供这个方法意图是:如果流的实现是将之前写入的数据缓存着,调用该方法可以强迫将数据真正写入流中。 |
3.
所有流类都直接或间接继承自上面4个抽象类,并提供不同的功能,下面是常用流类的继承关系:
InputStream
|-ByteArrayInputStream: 字节输入流。
|-FileInputStream: 文件输入流
|-ObjectInputStream: 对象输入流
|-PipedInputStream: 管道输入流
|-FilterInputStream: 过滤输入流
|-BufferedInputStream: 缓存输入流,读出时先缓存。
|-DataInputStream: 数据输入流,读出Java基本数据类型。
OutStream
|-ByteArrayOutputStream: 字节输出流
|-FileOutputStream: 文件输出流
|-ObjectOutputStream: 对象输出流
|-PipedOutputStream: 管道输出流
|-FilterOutputStream: 过滤输出流
|-BufferedOutputStream: 缓存输入流,读出时先缓存。
|-DataOutputStream: 数据输入流,读出Java基本数据类型。
Reader
|-CharArrayReader: 字符读流。
|-StringReader: 字符串读流。
|-PipedReader: 管道读流。
|-BufferedReader: 缓存读流。
|-InputStreamReader: 从字节流读出字符。
Writer
|-CharArrayWriter: 字符写流。
|-StringWriter: 字符串写流。
|-PipedWriter: 管道写流。
|-BufferedWriter: 缓存写流。
|-OutputStreamWriter: 将字符写入字节流。
相关文章推荐
- 2 Java语言基础
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(三)
- Java语言基础
- Java语言基础特性—第一部分(中)
- JAVA基础-语言
- java语言基础(68)——集合框架(泛型概述和使用)
- Java语言基础
- 黑马程序员_java语言的基础部分
- 黑马程序员——学习笔记02.java的语言基础
- Java语言基础算术运算符的基本用法
- day01--Java基础语法--Java语言基础
- Java语言基础1--综合案例(数字加密问题):
- _Java基础<三>_Java语言基础组成(下)
- java语言基础-10
- JAVA语言基础
- [置顶] java面试必备之语言基础
- Java基础第一阶段——02_Java语言基础_关键字&变量&运算
- 黑马程序员---Java语言基础
- 黑马程序员一一Java语言基础(五)
- 黑马程序员——java基础知识回顾(一)(java语言基础组成)