IO流的包装与链接、缓冲流

缓存流: 

 

 

 

 

 

package BufferedStream;

import java.io.*;

/*
一、IO流的分类:
①:按流向不同:输入流、输出流(以程序<内存>为主体)
②:按数据类型不同:字节流、字符流(字符流用于操作文本文件:txt .java)(字节流用于操作非文本文件 .avi  .jpg  .mp3)
③:按角色不同:节点流、处理流
二、IO流的体系结构
抽象基类             节点流              缓冲流(处理流的一种)
InputStream         FileInputStream     BufferedInputStream
OutputStream        FileOutputStream    BufferedOutputStream
Reader              FileReader          BufferedReader
Writer              FileWriter          BufferedWriter
 */
public class BufferedStreamTest {
    //  使用缓冲流完成非文本文件的复制
    public void copyFile(String src,String dest){
        BufferedInputStream bis= null;
        BufferedOutputStream bos= null;
        try {
            //1、创建FileInputStream实例,同时打开指定文件

            FileInputStream fis=new FileInputStream(src);

            //2、创建FileOutputStream实例,同时打开指定文件

            FileOutputStream fos=new FileOutputStream(dest);

            //3、创建BufferedInputStream 包装对应的节点流,用于提高效率

            bis = new BufferedInputStream(fis);

            //4、创建BufferedOutputStream 包装对应的节点流,用于提高效率

            bos = new BufferedOutputStream(fos);

            //5、读取指定文件的内容

            byte[] b=new byte[1024];
            int len=0;
            while ((len=bis.read(b))!=-1){
                //6、将指定的内容写到目标地点去

                bos.write(b,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //7、关闭流(只需要关闭缓存流,其底层会自动关闭节点流)手动关闭节点流的话就需要从下往上关闭
            if (bis!=null){
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bos!=null){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
package BufferedStream;

import java.io.*;

/*
一、IO流的分类:
①:按流向不同:输入流、输出流(以程序<内存>为主体)
②:按数据类型不同:字节流、字符流(字符流用于操作文本文件:txt .java)(字节流用于操作非文本文件 .avi  .jpg  .mp3)
③:按角色不同:节点流、处理流
二、IO流的体系结构
抽象基类             节点流              缓冲流(处理流的一种)
InputStream         FileInputStream     BufferedInputStream
OutputStream        FileOutputStream    BufferedOutputStream
Reader              FileReader          BufferedReader
Writer              FileWriter          BufferedWriter
 */
public class BufferedStreamTest {
    //  使用缓冲流完成非文本文件的复制
    public void copyFile(String src,String dest){
        BufferedInputStream bis= null;
        BufferedOutputStream bos= null;
        try {
            //1、创建FileInputStream实例,同时打开指定文件

            FileInputStream fis=new FileInputStream(src);

            //2、创建FileOutputStream实例,同时打开指定文件

            FileOutputStream fos=new FileOutputStream(dest);

            //3、创建BufferedInputStream 包装对应的节点流,用于提高效率

            bis = new BufferedInputStream(fis);

            //4、创建BufferedOutputStream 包装对应的节点流,用于提高效率

            bos = new BufferedOutputStream(fos);

            //5、读取指定文件的内容

            byte[] b=new byte[1024];
            int len=0;
            while ((len=bis.read(b))!=-1){
                //6、将指定的内容写到目标地点去

                bos.write(b,0,len);

               /* bos.flush();//强制清空缓冲区  :解决数据丢失问题 但会影响性能*/
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //7、关闭流(只需要关闭缓存流,其底层会自动关闭节点流)手动关闭节点流的话就需要从下往上关闭
            if (bis!=null){
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bos!=null){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //使用缓冲区完成文本文件的复制
    public void copyTextFile(String src,String dest){
        BufferedReader br= null;
        BufferedWriter bw= null;
        try {
            //1、创建FileReader实例,同时打开指定文件

            FileReader fr=new FileReader(src);
            //2、创建FileWriter实例,同时打开指定文件

            FileWriter fw=new FileWriter(dest);
            //3、创建BufferedReader 包装对应的节点流,用于提高效率

            br = new BufferedReader(fr);
            //4、创建BufferedWriter 包装对应的节点流,用于提高效率

            bw = new BufferedWriter(fw);
            //5、读取指定文件的内容
            String str=null;

            while ((str=br.readLine())!=null){
                //6、将读取的内容写到目标地点去
                /*bw.write(str+"\n");*/
                bw.write(str);
                bw.newLine();//换行
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //7、关闭流
            if (br !=null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bw !=null){
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }
    /*
    //1、创建FileReader实例,同时打开指定文件

        //2、创建FileWriter实例,同时打开指定文件

        //3、创建BufferedReader 包装对应的节点流,用于提高效率

        //4、创建BufferedWriter 包装对应的节点流,用于提高效率

        //5、读取指定文件的内容

        //6、将读取的内容写到目标地点去

        //7、关闭流
     */
}
//readlLine():一次性读取一行的字符串
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值