JAVA核心技术学习——流与文件(1.4个抽象类)


一.老祖宗: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

//返回的是类本身,所以可以写成:
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 接口略。



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值