Java中BufferedInputStream和BufferedOutputStream基本使用详解

BufferedInputStream的使用
BufferedInputStream:缓冲字节输入流,是一个高级流(处理流),与其他低级流配合使用。

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

//创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个长度为 size 的内部缓冲区数组并将其存储在 buf 中。
public BufferedInputStream(InputStream in,int size);
1
2
3
4
5
从构造方法中我们可以知道BufferedInputStream没有无参构造方法,它必须传入一个InputStream(一般是FileInputStream),来一起使用,以提高读写效率。

常用的方法
//从该输入流中读取一个字节
public int read();

//从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。
public int read(byte[] b,int off,int len);
1
2
3
4
5
6
从文件中读入数据
import java.io.BufferedInputStream;
import java.io.FileInputStream;

/**
 * BufferedInputStream:处理流(高级流),缓冲输入流
 * @author Administrator
 *
 */
public class BISDemo01 {
    public static void main(String[] args){
        try {
            FileInputStream fis=new FileInputStream("BISDemo.txt");
            BufferedInputStream bis=new BufferedInputStream(fis);
            String content=null;
             //自己定义一个缓冲区
            byte[] buffer=new byte[10240];
            int flag=0;
            while((flag=bis.read(buffer))!=-1){
                content+=new String(buffer, 0, flag);
            }
            System.out.println(content);
            //关闭的时候只需要关闭最外层的流就行了
            bis.close();
        } catch (Exception e) {
                e.printStackTrace();
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
BufferedOutputStream的使用
BufferedOutputStream:缓冲字节输出流是一个高级流(处理流),与其他低级流配合使用。

构造方法
//创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
public BufferedOutputStream(OutputStream out);

//创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
public BufferedOutputStream(OutputStream out,int size);
1
2
3
4
5
常用的方法
//向输出流中输出一个字节
public void write(int b);

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

//刷新此缓冲的输出流。这迫使所有缓冲的输出字节被写出到底层输出流中。
public void flush();
1
2
3
4
5
6
7
8
向文件中写出数据
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;

/**
 * BufferedOutputStream:处理流(高级流),缓冲输出流
 * @author Administrator
 *
 */
public class BOSDemo01 {
    public static void main(String[] args){
        try {
            FileOutputStream fos=new FileOutputStream("BOSDemo.txt");
            BufferedOutputStream bos=new BufferedOutputStream(fos);
            String content="我是缓冲输出流测试数据!";
            bos.write(content.getBytes(),0,content.getBytes().length);
            bos.flush();
            bos.close();
        } catch (Exception e) {
                e.printStackTrace();
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
使用缓冲输出流和缓冲输入流实现文件的复制
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * 使用缓冲输出流和缓冲输入流实现文件的复制
 * @author Administrator
 *
 */
public class SummaryBISAndBOS {
    public static void main(String[] args){
        /**
         * 1.先将文件中的内容读入到缓冲输入流中
         * 2.将输入流中的数据通过缓冲输出流写入到目标文件中
         * 3.关闭输入流和输出流
         */
        try {
            long begin=System.currentTimeMillis();
            FileInputStream fis=new FileInputStream("BISDemo.txt");
            BufferedInputStream bis=new BufferedInputStream(fis);

            FileOutputStream fos=new FileOutputStream("BOSDemo.txt");
            BufferedOutputStream bos=new BufferedOutputStream(fos);

            int size=0;
            byte[] buffer=new byte[10240];
            while((size=bis.read(buffer))!=-1){
                bos.write(buffer, 0, size);
            }
            //刷新此缓冲的输出流,保证数据全部都能写出
            bos.flush();
            bis.close();
            bos.close();
            long end=System.currentTimeMillis();
            System.out.println("使用缓冲输出流和缓冲输入流实现文件的复制完毕!耗时:"+(end-begin)+"毫秒");
        } catch (Exception e) {
                e.printStackTrace();
        }
    }
--------------------- 
作者:欧阳奔少 
来源:CSDN 
原文:https://blog.csdn.net/lyb1832567496/article/details/52727862 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的File类代表了操作系统上的文件和目录,可以用它来获取文件和目录的属性、路径、大小等信息,以及对文件和目录进行创建、删除、重命名等操作。File类的常用方法有: 1. exists():判断文件或目录是否存在。 2. isDirectory():判断当前File对象是否代表一个目录。 3. isFile():判断当前File对象是否代表一个文件。 4. getName():返回当前File对象的名称。 5. getPath():返回当前File对象的路径。 6. length():返回当前File对象代表的文件的大小。 IO流是Java进行输入输出操作的一种方式,分为字节流和字符流。字节流主要用于处理二进制数据,字符流主要用于处理文本数据。Java的IO流分为输入流和输出流,其输入流用于从外部获取数据,输出流用于向外部输出数据。常用的字节流有InputStreamOutputStream,常用的字符流有Reader和Writer。 常用的输入流有: 1. FileInputStream:用于从文件读取数据。 2. BufferedInputStream:提供了缓冲功能,可以提高读取效率。 3. ObjectInputStream:用于读取对象序列化后的数据。 常用的输出流有: 1. FileOutputStream:用于向文件写入数据。 2. BufferedOutputStream:提供了缓冲功能,可以提高写入效率。 3. ObjectOutputStream:用于将对象序列化后写入数据。 常用的字符流有: 1. FileReader:用于从文件读取字符数据。 2. BufferedReader:提供了缓冲功能,可以提高读取效率。 3. InputStreamReader:将字节流转换为字符流。 常用的字符输出流有: 1. FileWriter:用于向文件写入字符数据。 2. BufferedWriter:提供了缓冲功能,可以提高写入效率。 3. OutputStreamWriter:将字节流转换为字符流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值