java输入/输出流概述

java语言把与输入/输出有关的类都放在了java.io包中,其中,所有与输入流有关的类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有与输出流有关的类都是抽象类OutputStream(字节输出流)或抽象类Write(字符输出流)的子类

1.输入流

输入流抽象类有两种,分别是Inputstream(字节输入流)和Reader(字符输入流),

1.1 InputStream类

InputStream类时字节输入流的抽象类,是所有字节输入流的父类,InputStream类中的所有方法遇到错误时都会引发IOException异常,该类的常用方法及说明如下表:

方法返回值说明
read()int从输入流中读取数据的下一个字符,返回0~255范围内的int字节值,如果因为已经到达流末尾而没有可用的字节,则返回-1
read(byte[] b)int从输入流中读入一定长度的字节,并以整数的形式返回字节数
mark(int readlimit)void在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数
reset()void将输入指针返回到当前所做的标记处
skip(long n)long跳过输入流上的n个字符并返回实际跳过的字节数
markSupported()boolean如果当前流支持Mark()/reset()操作就返回true
close()void关闭此输入流并释放与该流关联的所有系统资源

注意:并不是InputStream类的所有子类都支持InputStream中定义的方法,如skip()、mark()、reset()等方法只对某些子类有用

1.2 Reader类

java中的字符是Unicode编码,是双字节的,而Inputsteam类使用来处理单字节的,并不适合处理字符,为此,java提供了专门用来处理字符的Reader类,Reader类时字符输入流的抽象类,也是所有字符输入流的父类。

Reader类中的方法与InputStream类中的方法类似,但需要注意的是,Reader类的read()方法的参数为char类型的数组,另外,Reader还提供了一个ready()方法,该方法用来判断是否准备读取流,其返回值为Boolean类型。

2.输出流

输出流抽象类也有两种,分别是OutputStream字节输出流和Writer字符输出流。

2.1 OutputStream类

OutputStream类时字节输出流的抽象类,是所有字节输出流的父类,OutputStream类中的所有方法均没有返回值,在遇到错误是会发生IOException异常,该类的常用方法如下表:

方法说明
write()将指定的字节写入此输出流
write(byte[] b)将b个字节从指定的byte数组写入此输出流
write(byte[] b,int off,int len)将指定byte数组中从偏移量off开始的len个字节写入此输出流
flush()彻底完成输出并清空缓冲区
close()关闭输出流

2.2 Writer类

Writer类时字符输出流的抽象类,是所有字符输出流的父类,Writer类的常用方法及说明如下表:

方法说明
append(char c)将指定字符添加到此writer
append(charSequence csq)将指定字符序列添加到此writer
append(charSequence csq,int start,int end)将指定字符序列的子序列添加到此writer.Appendable
close()关闭此流,但要先刷新它
flush()刷新该流的缓冲
write(char[] cbuf)写入字符数组
write(char[] cbuf,int start,int len)写入字符数组的某一个部分
write(int c)写入单个字符
write(String str)写入字符串
write(String str,int start,int len)写入字符串的某一部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值