JAVA核心技术学习——流与文件(1.4个抽象类)
2014-10-04 20:59
423 查看
一.老祖宗:4个抽象类
抽象类 InputStream 和 OutputStream 构成输入/输出类的基础。读写操作基于一个字节序列。
抽象类 Reader 和 Writer 专门用于处理Unicode字符。读写操作基于两个字节的Unicode码元。
抽象类InputStream:属于java.io包;实现Closeable接口
常量:
int MAX_SKIP_BUFFER_SIZE = 2048; 能跳过的最大字节数量(skip()用)
抽象方法(子类必须实现)
abstract int read() 读入一个字节。具体的输入流类必须且只需覆盖这个方法以提供具体的输入功能。
非抽象方法
int read(byte b[]) read和write方法在执行时都将阻塞,即等待输入/输出。其他线程则有机会执行。
(阻塞意味着当前线程将失去它对资源的占用。)
int read(byte b[], int off, int len)
从输入流中读取字节,并将其存储在缓冲区数组 b 中。
返回读取的总字节数;如果达到流的末尾,返回 -1;如果len为0,不读取字节并 返回 0;
long skip(long n) 跳过n个字节。跳过的最大字节数为(MAX_SKIP_BUFFER_SIZE = 2048)
实际上临时创建了个byte数组,读入n个字节。
int available() 返回在不阻塞的情况下可获取的字节数。
int close() 释放。
void mark(int readlimit) 打标记。synchronized
void reset()
boolean markSupported() 是否支持打标记
抽象类OutputStream:属于java.io包;实现Closeable,Flushable接口
抽象方法(子类必须实现)
abstract void write(int b) 读入一个字节。具体的输入流类必须且只需覆盖这个方法。
非抽象方法
void write(byte[] b)
void write(byte[] b, int off, int len)
void flush()
void close()
抽象类Reader:属于java.io包;实现Readable, Closeable接口
抽象方法(子类必须实现): read(char[], int, int) close()
skip()方法跳过的最大字节数8192
抽象类Writer:属于java.io包;实现Appendable, Closeable, Flushable接口
抽象方法(子类必须实现): write(char[], int, int)、flush() 和 close()
可以输出字符int,字符数组char[],和字符串String
Writer append(CharSequence csq)
Writer append(CharSequence csq, int start, int end)
Writer append(char c) 将指定字符序列添加到此 writer
关于四个接口:Flushable, Closeable,Readable, Appendable 接口略。
抽象类 InputStream 和 OutputStream 构成输入/输出类的基础。读写操作基于一个字节序列。
抽象类 Reader 和 Writer 专门用于处理Unicode字符。读写操作基于两个字节的Unicode码元。
抽象类InputStream:属于java.io包;实现Closeable接口
常量:
int MAX_SKIP_BUFFER_SIZE = 2048; 能跳过的最大字节数量(skip()用)
抽象方法(子类必须实现)
abstract int read() 读入一个字节。具体的输入流类必须且只需覆盖这个方法以提供具体的输入功能。
非抽象方法
int read(byte b[]) read和write方法在执行时都将阻塞,即等待输入/输出。其他线程则有机会执行。
(阻塞意味着当前线程将失去它对资源的占用。)
int read(byte b[], int off, int len)
从输入流中读取字节,并将其存储在缓冲区数组 b 中。
返回读取的总字节数;如果达到流的末尾,返回 -1;如果len为0,不读取字节并 返回 0;
long skip(long n) 跳过n个字节。跳过的最大字节数为(MAX_SKIP_BUFFER_SIZE = 2048)
实际上临时创建了个byte数组,读入n个字节。
int available() 返回在不阻塞的情况下可获取的字节数。
int close() 释放。
void mark(int readlimit) 打标记。synchronized
void reset()
boolean markSupported() 是否支持打标记
抽象类OutputStream:属于java.io包;实现Closeable,Flushable接口
抽象方法(子类必须实现)
abstract void write(int b) 读入一个字节。具体的输入流类必须且只需覆盖这个方法。
非抽象方法
void write(byte[] b)
void write(byte[] b, int off, int len)
void flush()
void close()
抽象类Reader:属于java.io包;实现Readable, Closeable接口
抽象方法(子类必须实现): read(char[], int, int) close()
skip()方法跳过的最大字节数8192
抽象类Writer:属于java.io包;实现Appendable, Closeable, Flushable接口
抽象方法(子类必须实现): write(char[], int, int)、flush() 和 close()
可以输出字符int,字符数组char[],和字符串String
Writer append(CharSequence csq)
Writer append(CharSequence csq, int start, int end)
Writer append(char c) 将指定字符序列添加到此 writer
//返回的是类本身,所以可以写成: writer.append("........").append("........").append(....).append(......);
</pre><pre name="code" class="java">注意:
1.可以看到,InputStream 和 Reader 类中的read方法面对的<span style="font-family: Arial, Helvetica, sans-serif;">分别是字节和字符,</span><span style="font-family: Arial, Helvetica, sans-serif;">但是</span><span style="font-family: Arial, Helvetica, sans-serif;">返回类型都是int。</span>
<span style="white-space:pre"> read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数</span>。然后才可以用-1表示流的结尾。(不会与所读取的数据重复)
<span style="white-space:pre"> </span>然后将数据强转回(byte),就可以得到原始数据。
关于四个接口:Flushable, Closeable,Readable, Appendable 接口略。
相关文章推荐
- JAVA核心技术学习——流与文件(3.字符集)
- JAVA核心技术学习——流与文件(2.组合流过滤器)
- JAVA核心技术学习——流与文件(5.操作文件FILE)
- JAVA核心技术学习——流与文件(4.对象流与序列化)
- 高手Java核心技术学习笔记
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(三)
- java核心技术学习笔记4---String字符串
- Java2核心技术学习
- java核心技术学习笔记8---equals()方法和hashCode()方法
- 高手Java核心技术学习笔记
- java核心技术学习笔记3---运算符与类型转换
- JAVA 核心技术卷1学习笔记(1)
- JAVA2核心技术卷1 学习笔记3 对象和类
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(一)
- Java学习笔记——文件读取技术
- java核心技术学习笔记2---基本数据类型
- Java2核心技术学习笔记
- java实现图片浏览:java核心技术学习
- Java2核心技术学习笔记 分类: java 2009-11-29 23:54 339人阅读 评论(0) 收藏
- Java核心技术知识学习