使用Java缓冲流(BufferedInputStream、BufferedOutputStream)实现文件的复制

简介: 文件的复制我们一般使用java的缓冲流,因为缓存流较节点流更快。

使用java缓冲流实现文件的复制


文件的复制我们一般使用java的缓冲流,因为缓存流较节点流更快。

步骤:

1、创建源文件、目标文件

2、创建输入节点流、输出节点流

3、创建输入缓冲流、输出缓冲流

4、将文件读入到内存然后写出到目的地址

5、关闭流(关闭流的顺序是先关闭外层再关闭内层流,但是关闭外层流的同时内层流会自动关闭,所以只需要关闭外层流即可)

1、创建源文件、目标文件

File srcFile = new File(srcPath);
File destFile = new File(destPath);

2、创建输入节点流、输出节点流

FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);

3、创建输入缓冲流、输出缓冲流

bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);

4、将文件读入到内存然后写出到目的地址

byte[] buffer = new byte[10];
int len;
while ((len=bis.read(buffer))!=-1){
      bos.write(buffer,0,len);
}

5、关闭流(关闭流的顺序是先关闭外层再关闭内层流,但是关闭外层流的同时内层流会自动关闭,所以只需要关闭外层流即可)

bos.close();
bis.close();

最后加上异常处理,并将其抽取到工具类中,代码如下

/**
 * @author 齐天大圣
 * @Version 1.0
 */
public class FileUtiles {
    public static void  f(String srcPath,String destPath){//源文件路径,目标文件路径
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            //1、创建源文件、目标文件
            File srcFile = new File(srcPath);
            File destFile = new File(destPath);
            //2、创建输入节点流、输出节点流
            FileInputStream fis = new FileInputStream(srcFile);
            FileOutputStream fos = new FileOutputStream(destFile);
            //3、创建输入缓冲流、输出缓冲流
            bis = new BufferedInputStream(fis);
            bos = new BufferedOutputStream(fos);
            //4、将文件读入到内存然后写出到目的地址
            byte[] buffer = new byte[10];
            int len;
            while ((len=bis.read(buffer))!=-1){
                bos.write(buffer,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //5、关闭流(关闭流的顺序是先关闭外层再关闭内层流,但是关闭外层流的同时内层流会自动关闭,所以只需要关闭外层流即可)
//            bos.close();
//            bis.close();
            if (bos!=null){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bis!=null){
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
//        fos.close();
//        fis.close();
        }
    }
}

测试

2345_image_file_copy_397.jpg

2345_image_file_copy_398.jpg

复制后

2345_image_file_copy_399.jpg

相关文章
|
24天前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
25 1
|
28天前
|
Java
java中替换文件内容
java中替换文件内容
14 1
|
29天前
|
Java API
Java中文件与输入输出
Java中文件与输入输出
|
30天前
|
Java
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
9 0
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
1月前
|
存储 Java 文件存储
如何用 Java 压缩 ZIP 文件?
【2月更文挑战第21天】
29 1
|
1月前
|
Java
Java实现文件和目录的管理
Java实现文件和目录的管理
24 0
|
26天前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
90 3
|
29天前
|
Java
使用java将字符串写入到指定的文件中
使用java将字符串写入到指定的文件中
11 0