IO流(缓冲流)


 

1.字节缓冲流

  • 原理:字节缓冲输入流自带8KB缓冲池;字节缓冲输出流自带8KB缓冲池
public static void main(String[] args) throws IOException {
        try(
            InputStream is = new FileInputStream("D:\\pt\\123.jpg");
            //1.定义一个字节缓冲输入流包装原始的字节输入流
            InputStream bis = new BufferedInputStream(is,8192 * 2);

            OutputStream os = new FileOutputStream("C:\\hhh\\123.jpg");
            //2.定义一个字节缓冲输出流包装原始的
            OutputStream bos = new BufferedOutputStream(os,8192 * 2);
        ){

        byte[] buffer = new byte[1024];

        int len;//记住每次读取了多少个字节
        while ((len = bis.read(buffer)) != -1){
            bos.write(buffer,0,len);
        }
            System.out.println("复制完成!");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

2.字符缓冲流

BufferedReader(字符缓冲输入流)
  • 作用:自带8K的字符缓冲池,可以提高字符输入流读取字符数据的性能
public static void main(String[] args) {
        try (
                FileReader fr = new FileReader("src/666.txt");
                //创建一个字符缓冲输入流包装原始的字符输入流
                BufferedReader br = new BufferedReader(fr)
        ){
//            char[] buffer = new char[3];
//            int len;
//            while ((len = fr.read(buffer)) != -1){
//                System.out.println(new String(buffer, 0, len));
//            }
//            System.out.println(br.readLine());
//            System.out.println(br.readLine());
//            System.out.println(br.readLine());

            String line; //记住每次读取的一行数据
            while ((line = br.readLine()) != null){
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
BufferedWriter(字符缓冲输出流)
 public static void main(String[] args) {
        try (
                Writer fw = new FileWriter("src/666.txt",true);
             //
             BufferedWriter bw = new BufferedWriter(fw);

        ){

            fw.write("123");
            fw.write("6");
            fw.write("wcw");
            bw.newLine();//换行

            fw.write("123");
            fw.write('a');
            bw.newLine();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3.案例:恢复文本的序号顺序到新文件中

public static void main(String[] args) {
        try (

             BufferedReader br = new BufferedReader(new FileReader("src/666.txt"));
             BufferedWriter bw = new BufferedWriter(new FileWriter("src/123.txt"));

        ){
            //1.定义一个ArrayList集合存放每段内容
            List<String> data = new ArrayList<>();

            //2.按照每行读取内容,存入到集合
            String line;
            while((line = br.readLine()) != null){
                data.add(line);
            }

            //3.进行排序
            Collections.sort(data);
            System.out.println(data);

            //4.遍历集合存入到新文件
            for (String l : data) {
                bw.write(l);
                bw.newLine();
            }


        } catch (IOException e) {
            e.printStackTrace();
        }
    }

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值