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()
测试这个输入流是否支持 markreset方法。
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();
    }
}
复制代码

 

posted @   monkey大佬  阅读(296)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示