Java IO——BufferedInputStream 和 BufferedOutputStream

BufferedInputStream 和 BufferedOutputStream 为IO提供了带缓冲区的操作,打开文件进行写入或读取操作时,都会加上缓冲,这种流模式提高了IO的性能

BufferedInputStream 和 BufferedOutputStream是继承的FilterInputStream,使用的是装饰模式,所以需要关联其他流才能使用(看构造方法就知道)。

BufferedInputStream的构造方法如下:

//创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个内部缓冲区数组并将其存储在 buf 中,该buf的大小默认为8192。
public BufferedInputStream(InputStream in);

//创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个长度为 size 的内部缓冲区数组并将其存储在 buf 中。
public BufferedInputStream(InputStream in,int size);

BufferedOutputStream的构造方法和上面的BufferedInputStream的构造方法一模一样。

BufferedInputStream常用方法:

int	read()
见 read法 InputStream的一般合同。以整形的方式返回读取的下一个字节,如果到达文件末尾返回-1。

int	read(byte[] b, int off, int len)
从给定的偏移开始,将字节输入流中的字节读入指定的字节数组。返回读取的字节数,如果到达文件末尾返回-1。

int	available()
返回从该输入流中可以读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。

void	close()
关闭此输入流并释放与流相关联的任何系统资源。

void	mark(int readlimit)
见的总承包 mark的方法 InputStream 。

boolean	markSupported()
测试这个输入流是否支持 mark和 reset方法。

void	reset()
见 reset法 InputStream的一般合同。

long	skip(long n)
见 skip法 InputStream的一般合同。

BufferedInputStream常用方法:

void	flush()
刷新缓冲输出流。

void	write(byte[] b, int off, int len)
从指定的字节数组写入 len个字节,从偏移 off开始到缓冲的输出流。

void	write(int b)
将指定的字节写入缓冲的输出流。

 

 

示例:

   public static void inputByBuffered(File srcFile, File desFile) throws IOException {
        if(!srcFile.exists()){
            throw new IllegalArgumentException("文件" + srcFile + "不存在");
        }
        if(!srcFile.isFile()){
            throw new IllegalArgumentException(srcFile + "不是一个文件");
        }
        FileInputStream fileInputStream = new FileInputStream(srcFile);
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

        FileOutputStream fileOutputStream = new FileOutputStream(desFile);
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

        byte[] bytes = new byte[1024*10];
        int c = 0;

        while((c = bufferedInputStream.read(bytes, 0, bytes.length)) != -1){
            bufferedOutputStream.write(bytes, 0, bytes.length);
        }

        bufferedOutputStream.flush();

        bufferedInputStream.close();
        bufferedOutputStream.close();
    }

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值