1hutool实战:IoUtil 流操作工具类(copy拷贝操作)

简介: 1hutool实战:IoUtil 流操作工具类(copy拷贝操作)

image.png

用途:IO工具类(copy拷贝操作)

使用场景

IO工具类只是辅助流的读写,并不负责关闭流。原因是流可能被多次读写,读写关闭后容易造成问题。

(copy拷贝操作)

(copy拷贝操作)

(copy拷贝操作)

项目引用

此博文的依据:hutool-5.6.5版本源码image.pngimage.pngimage.pngimage.pngimage.png

public class StreamProgressObj implements StreamProgress {
  @Override
  public void start() {
    System.out.println("copy操作进度开始");
  }
  @Override
  public void progress(long progressSize) {
    System.out.println("当前copy操作进度:"+progressSize);
  }
  @Override
  public void finish() {
    System.out.println("copy操作进度结束");
  }
}
public class IoUtilTest {
  @Test
  public void copyTest3(){
    //事先创建源文件,目标文件可以不用创建
    File src = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/copyTest1.txt") ;
    File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/toCopyTest1.txt") ;
    FileWriter fw = null;
    FileReader fr = null;
    try {
      //创建流
      fw = new FileWriter(dest);
      fr = new FileReader(src);
      StreamProgressObj streamProgressObj = new StreamProgressObj();
      IoUtil.copy(fr,fw,1024,streamProgressObj);
    } catch (IOException e) {
      //抛出一个运行时异常(直接停止掉程序)
      throw new RuntimeException("运行时异常",e);
    } finally {
      try {
        //如果是空的 说明流创建失败 失败了不需要关闭
        if (fw != null) {
          fw.close();
        }
      } catch (Exception e) {
        //关闭资源失败 停止程序
        throw new RuntimeException("关闭资源失败");
      }finally {
        try {
          if (fr != null) {
            fr.close();
          }
        } catch (Exception e) {
          throw new RuntimeException("关闭资源失败");
        }
      }
    }
  }
}

image.pngimage.png

方法明细

方法名称:cn.hutool.core.io.IoUtil.copy(java.io.InputStream, java.io.OutputStream, int)

方法描述

拷贝流,拷贝后不关闭流

支持版本及以上

参数描述:image.pngimage.pngimage.pngimage.pngimage.png

目录
相关文章
|
资源调度
#发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou
#发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou
813 0
|
SQL 算法 Java
Myqsql使用Sharding-JDBC分表分库和读写分离 2
Myqsql使用Sharding-JDBC分表分库和读写分离
369 0
|
12月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
1956 3
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
24510 0
|
Java 编译器 iOS开发
8 种 Java 内存溢出之七 -Requested array size exceeds VM limit
8 种 Java 内存溢出之七 -Requested array size exceeds VM limit
|
Java Linux 虚拟化
Docker 部署spring-boot项目(超详细 包括Docker详解、Docker常用指令整理等)
Docker 部署spring-boot项目(超详细 包括Docker详解、Docker常用指令整理等)
6776 2
|
XML Java 程序员
保姆级教程,手把手教你实现SpringBoot自定义starter
保姆级教程,手把手教你实现SpringBoot自定义starter
13066 2
保姆级教程,手把手教你实现SpringBoot自定义starter
|
SQL 存储 缓存
【MySQL】一文了解MySQL的基础架构及各个组件的作用
不管是开运、运维、测试,都或多或少的要接触MySQL,了解MySQL的基础架构及各个组件之间的关系,有助于我们更加深入的理解MySQL
1132 6
【MySQL】一文了解MySQL的基础架构及各个组件的作用
Due to limitations of the com.mongodb.BasicDocument, you can‘t add a second ‘_id‘ criteria. Query al
Due to limitations of the com.mongodb.BasicDocument, you can‘t add a second ‘_id‘ criteria. Query al
322 2
|
SQL 数据可视化 前端开发
简单好用的ElasticSearch可视化工具:es-client和Head
使用 ElasticSearch(简称 es) 的过程中,经常有一些临时查询(如 排查问题、验证效果),一个趁手的可视化工具 可以提高工作效率。个人倾向于 免费(最好开源)、易于安装(如 浏览器插件),`es-client` 就是 比较简单好用的一个,尤其是 查询
11612 0