Io输入输出流---缓冲流

视频参考:15-尚硅谷-Java语言高级-缓冲流(字节型)实现非文本文件的复制哔哩哔哩bilibili

缓冲流的使用

1.缓冲流

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter

2.作用

加快流的读取、写入的速度

1.非文件的读写

package com.mokuiran.bufferedfile;

import java.io.*;

public class Demo {
   public static void main(String[] args) {
       Demo demo = new Demo();
       demo.BufferedStreamTest();

  }
   public void BufferedStreamTest(){
       BufferedInputStream bis = null;
       BufferedOutputStream bos = null;
       try {
           //1.创建对象
           File file1 = new File("1.jpg");
           File file2 = new File("buffer1.jpg");

           //2.创建流
           //2.1 创建节点流
           FileInputStream fi = new FileInputStream(file1);
           FileOutputStream fo = new FileOutputStream(file2);
           //2.2 创建缓冲流
           bis = new BufferedInputStream(fi);
           bos = new BufferedOutputStream(fo);

           //3.读取和写入
           byte[] bytes = new byte[10];
           int len;
           while ((len=bis.read(bytes)) != -1){
               bos.write(bytes,0,len);
          }
      } catch (IOException e) {
           e.printStackTrace();
      } finally {
           //4.关闭资源
           //关闭外层流的同时,内层流也会自动的进行关闭。因此,内层流的关闭我们可以省略
           try {
               if (bos!=null)
               bos.close();
          } catch (IOException e) {
               e.printStackTrace();
          }
           try {
               if (bis!=null)
               bis.close();
          } catch (IOException e) {
               e.printStackTrace();
          }
      }



  }
}

2.文件的读写

package com.mokuiran.bufferedfile;

import java.io.*;

public class DemoBufferedRW {
   public static void main(String[] args) {
       DemoBufferedRW rw = new DemoBufferedRW();
       rw.TestBufferedRW();

  }
   public void TestBufferedRW(){
       BufferedReader br = null;
       BufferedWriter bw = null;
       try {
           //1.创建对象
           File file1 = new File("hello.txt");
           File file2 = new File("buffer.txt");

           //2.创建流
           br = new BufferedReader(new FileReader(file1));
           bw = new BufferedWriter(new FileWriter(file2));

           //3.读取和写入
           char[] bytes = new char[1024];
           //方式一
           // int len;
//           while ((len=br.read(bytes)) != -1){

               // bw.write(bytes,0,len);法
               //方式二

//           }
           //方式二
           String data;
           while ((data = br.readLine()) != null){
               //方式一
               bw.write(data+"\n");

               //方式二
//               bw.write(data);//文件内容不换行
//               bw.newLine();//换行
          }
      } catch (IOException e) {
           e.printStackTrace();
      } finally {
           //4.关闭资源
           //关闭外层流的同时,内层流也会自动的进行关闭。因此,内层流的关闭我们可以省略
           try {
               if (bw!=null)
                   bw.close();
          } catch (IOException e) {
               e.printStackTrace();
          }
           try {
               if (br!=null)
                   br.close();
          } catch (IOException e) {
               e.printStackTrace();
          }
      }
  }
}
 
posted @   默夔然  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示