标签:color 中标 单个字符 summary flush red read long ted
InputStream和OutputStream是所有的输入流和输出流的超类。他们两个都是抽象类。
read方法和write方法都是阻塞方法,这意味着如果不能里可以写入或者读取,比如因为网络问题,那么当前线程将会被阻塞。
InputStream的API:
方法摘要 | |
int | available() |
void | close() |
void | mark(int readlimit) |
boolean | markSupported() |
abstract int | read() |
int | read(byte[] b) |
int | read(byte[] b, int off, int len) |
void | reset() |
long | skip(long n) |
OutStream的API:
方法摘要 | |
void | close() |
void | flush() |
void | write(byte[] b) |
void | write(byte[] b, int off, int len) |
abstract void | write(int b) |
用于读取和写入Unicode字符流的抽象类。和字节流的API类似。
看下面的API,何止是类似,兼职就是一样。因为不论是读取字节还是读取Unicode字符(这里其实是Unicode编码单元,2个字节),都是使用的int类型(4个字节)作为参数。
abstract void | close() |
void | mark(int readAheadLimit) |
boolean | markSupported() |
int | read() |
int | read(char[] cbuf) |
abstract int | read(char[] cbuf, int off, int len) |
int | read(CharBuffer target) |
boolean | ready() |
void | reset() |
long | skip(long n) |
如下使用:
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("person.dat")));
数据输入流允许应用程序以与机器无关方式从基础输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
通过它的方法可以看出它的常用使用场景:
通过在内部维护一个缓冲区,每次执行read方法的时候,它底层其实是读取了固定大小数目的字节到内存的缓冲区中(通过构造参数可以配置每次读取字节的数目,也就是缓冲区的大小)中,然后下次读取的时候,直接从内存的缓冲区中拿,不同在通过原始的方式(如网络或者磁盘)。
write的时候,也是只写入到内部的缓冲区中,当缓冲区满了才会做真正的写入操作。
标签:color 中标 单个字符 summary flush red read long ted
原文地址:http://www.cnblogs.com/xiaolang8762400/p/7397112.html