2020-10-09

Java学习笔记(5)

I/O(输入/输出)

Java由数据流处理输入/输出模式,其中输入流是指打开一个从数据源到程序的流,并从这个流读取数据。输出流是为了将程序中的数据传输到某个目的地,在传输过程中,需要将数据写入这个流中。

Java定义了许多类负责各种方式的输入输出,这些类都被放在java.io包中。其中所有输入流类都是抽象类InputStream或抽象类Reader的子类。所有的输出流都是抽象类OutputStream或抽象类Writer的子类。

输入流

输入流抽象类分为InputStream字节输入流和Reader字符输入流。

InputStream

方法返回值说明
read()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关闭输入流并释放系统资源

Reader

Reader类是为字符文本的输入专门提供的类,并不是InputStream的替换者,只是在处理字符时简化了编程。

输出流

输出流抽象类包括OutputStream字节输出流和Writer字符输出流

OutputStream

OutputStream所有方法均返回void,在遇到错误是会引发IOException异常。

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

Writer

Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类

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

带缓冲的输入/输出流

缓冲是I/O的一种性能优化。缓冲流为I/O流增加了内存缓冲区,有了缓冲区,是的在流上执行skip()、mark()和reset()方法都成为可能

BufferedInputStream

可以对所有InputStream类进行缓冲区的包装以达到性能的优化。BufferedInputStream类有两个构造方法

  1. BufferedInputStream(InputStream in):创建一个带有32字节的缓冲输入流
  2. BufferedInputStream(InputStream in,int size):按指定的大小来创建缓冲输入流

BufferedOutputStream

  1. BufferedOutputStream(OutputStream in):创建一个有32字节的缓冲输出流
  2. BufferedOutputStream(OutputStream in,int size):创建一个指定大小的缓冲输出流

BufferedReader

方法返回值说明
read()int读取单个字符
readLine()String读取一个文本行,若无数据,则返回null

BufferedWriter

方法返回值说明
write(String s,int off,int len)void写入字符串的一部分
flush()void刷新该流的缓冲
newLine()void写入一个行分隔符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值