BufferedOutputStream字节缓冲输出流和BufferedInputStream字节缓冲输入流
BufferedOutputStream字节缓冲输出流
java.io.BufferedOutputStream extends OutputStream
BufferedOutputStream:字节缓冲输出流
继承自父类的共性成员方法:
void |
close()
关闭此输出流并释放与此流相关联的任何系统资源。
|
void |
flush()
刷新此输出流并强制任何缓冲的输出字节被写出。
|
void |
write(byte[] b)
将
b.length 字节从指定的字节数组写入此输出流。 |
void |
write(byte[] b, int off, int len)
从指定的字节数组写入
len 个字节,从偏移 off 开始输出到此输出流。 |
abstract void |
write(int b)
将指定的字节写入此输出流。
|
构造方法:
BufferedOutputStream(OutputStream out)
创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
|
BufferedOutputStream(OutputStream out, int size)
创建一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流。
|
使用步骤(重点):
1.创建FileOutputStream对象,构造方法中绑定要输出的目的地
2.创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率
3.使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中
4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中
5.释放资源(会先调用flush方法刷新数据,第4步可以省略)
public class DemoBuffered { public static void main(String[] args) throws IOException { FileOutputStream outputStream = new FileOutputStream("a.txt"); //存入缓冲区 BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); bufferedOutputStream.write("把数据写入内部缓冲区中".getBytes()); bufferedOutputStream.flush();//刷新 bufferedOutputStream.close();//关闭资源 } }
运行结果:
BufferedInputStream字节缓冲输入流
java.io.BufferedInputStream extends InputStream
BufferedInputStream:字节流缓冲输入流
继承自父类的成员方法:
int |
available()
返回从该输入流中可以读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。
|
void |
close()
关闭此输入流并释放与流相关联的任何系统资源。
|
void |
mark(int readlimit)
标记此输入流中的当前位置。
|
boolean |
markSupported()
测试这个输入流是否支持
mark 和 reset 方法。 |
abstract int |
read()
从输入流读取数据的下一个字节。
|
int |
read(byte[] b)
从输入流读取一些字节数,并将它们存储到缓冲区
b 。 |
int |
read(byte[] b, int off, int len)
从输入流读取最多
len 字节的数据到一个字节数组。 |
void |
reset()
将此流重新定位到上次在此输入流上调用
mark 方法时的位置。 |
long |
skip(long n)
跳过并丢弃来自此输入流的
n 字节数据。 |
构造方法:
BufferedInputStream(InputStream in)
创建一个
BufferedInputStream 并保存其参数,输入流 in ,供以后使用。 |
BufferedInputStream(InputStream in, int size)
创建
BufferedInputStream 具有指定缓冲区大小,并保存其参数,输入流 in ,供以后使用。 |
参数:
InputStream in:字节输入流
我们可以传递FileInputStream,缓冲流会给FileInputStream增加一个缓冲区,提高FileInputStream的读取效率
int size:指定缓冲流内部缓冲区的大小,不指定默认
使用步骤:(重点)
1.创建FileInputStream对象,构造方法中绑定要读取的数据源
2.创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象的读取效率
3.使用BufferedInputStream对象中的方法read,读取文件
4.释放资源
void |
reset()
从输入流中读取数据的下一个字节
|
运行结果:
public class DemoBuffered { public static void main(String[] args) throws IOException { FileInputStream inputStream = new FileInputStream("a.txt"); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); int lne; while ((lne=bufferedInputStream.read())!=-1){ System.out.println(lne); } bufferedInputStream.close(); } }
int |
read(byte[] b)
从输入流读取一些字节数,并将它们存储到缓冲区
b |
public class DemoBuffered { public static void main(String[] args) throws IOException { FileInputStream inputStream = new FileInputStream("a.txt"); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); byte[] bys = new byte[1024]; int lne; while ((lne=bufferedInputStream.read(bys))!=-1){ System.out.println(new String(bys,0,lne)); } bufferedInputStream.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY