File 复制文件

news2024/9/20 14:43:18

 一.代码

package org.example;

import java.io.*;

public class day05 {
    public static void main(String[] args) throws IOException {
        //复制图片
        //创建字节输入流管道与源文件接通
        final FileInputStream is = new FileInputStream("D:\\temp\\day05\\图2.jpg");
        //创建字节输出流管道与目标文件接通
        final FileOutputStream os = new FileOutputStream("D:\\temp\\day05\\tu.jpg");
        //创建字节数组,转移字节数据
        final byte[] buffer = new byte[1024];
        //从字节输入流读取字节数据,读多少写多少
        int len;
        while((len = is.read(buffer)) != -1){
            os.write(buffer,0,len);
        }
        os.close();
        is.close();
    }
}

二.优化

package org.example;

import java.io.*;

public class day05 {
    public static void main(String[] args) throws IOException {
        try(
                InputStream is = new FileInputStream("D:\\temp\\day05\\图2.jpg");
                //创建字节输出流管道与目标文件接通
                OutputStream os = new FileOutputStream("D:\\temp\\day05\\tu1.jpg");
                ) {
            //复制图片
            //创建字节输入流管道与源文件接通
            //创建字节数组,转移字节数据
            final byte[] buffer = new byte[1024];
            //从字节输入流读取字节数据,读多少写多少
            int len;
            while((len = is.read(buffer)) != -1){
                os.write(buffer,0,len);
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

以上代码没有使用try-catch-finally释放资源

而是采用try-with-resource方式

优点:该资源使用完毕后,会自动调用其close()方法,完成对资源的释放!

 我们看下底层代码

三.测试

这里测试一下是否是自动调用close()

1.代码
package org.example;

import java.io.*;

public class day05 {
    public static void main(String[] args) throws IOException {
        try(
                InputStream is = new FileInputStream("D:\\temp\\day05\\图2.jpg");
                //创建字节输出流管道与目标文件接通
                OutputStream os = new FileOutputStream("D:\\temp\\day05\\tu2.jpg");
                //资源都是会实现AutoCloseable接口,资源都会有一个close()方法,并且资源都放在这里
                //用完后,会自动调用close()方法,完成资源释放
                 Mycon mycon = new Mycon()
        ) {
            final byte[] buffer = new byte[1024];
            //从字节输入流读取字节数据,读多少写多少
            int len;
            while((len = is.read(buffer)) != -1){
                os.write(buffer,0,len);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
package org.example;

public class Mycon implements AutoCloseable{

    @Override
    public void close() throws Exception {
        System.out.println("在这里释放资源");
    }
}
2.结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1144746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考高项-计算题(2)

题4 项目的总预算是包含管理储备的,所以总预算应该是:13238102*360 ETC(BAC-EV)/CPI BAC60 EV60*0.318 CPI18/200.9 ETC42/0.9 答案选择C A 题5 因为题目中提到了“按目前的状况继续发展”,那么是:ETC(BAC-EV)/CPI EV1230*0…

计算机网络基础二

课程目标 了解 OSI 七层模型分层结构 了解 TCP/IP 协议簇四层模型分层结构 能够说出 TCP/IP 协议簇中 运输层、网络层和数据链路 层常见的 相关协议 能够说出 TCP/IP 的三次握手四次断开过程 了解 Vmware 的三种网络模式 能够使用客户端工具连接虚拟机 掌握主机名、 DNS…

java原子类-Atomic

什么是原子类? java 1.5引进原子类,具体在java.util.concurrent.atomic包下,atomic包里面一共提供了13个类,分为4种类型,分别是: 原子更新基本类型,原子更新数组,原子更新引用&…

Redis(06)| 数据结构-整数集合

整数集合是 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不大时,就会使用整数集这个数据结构作为底层实现。 整数集合结构设计 整数集合本质上是一块连续内存空间,它的结构定义如下: typedef struct…

【黑马程序员】Springboot2 学习笔记

课程地址 1. Springboot parent和starter区别 parent:开发Springboot项目需要继承spring-boot-starter-parent,其中定义了若干个依赖管理(坐标版本号),避免依赖版本冲突;starter:开发Springboo…

提升演讲口才,助青少年踏上成功之路

提升演讲口才,助青少年踏上成功之路 引言: 青少年时期是一个人成长发展的关键阶段,而演讲口才的培养不仅可以帮助他们在学业和职业上取得成功,还能帮助他们塑造自信、提升沟通能力,并在社交场合中脱颖而出。本文将探讨…

springboot在线招聘系统

springboot在线招聘管理系统,java在线招聘管理系统,在线招聘管理系统 运行环境: JAVA版本:JDK1.8 IDE类型:IDEA、Eclipse都可运行 数据库类型:MySql(8.x版本都可) 硬件环境&#xf…

GDB调试-链接器

GDB(GNU Debugger)是一个强大的命令行调试工具,用于调试C、C等编程语言的程序。以下是一些常用的GDB调试命令: 一、启动 GDB:打开终端并输入以下命令来启动GDB,并将可执行文件作为参数 gdb ld-new 二、运…

【源码解析】Spring源码解读-beanFactory和Bean的后置处理器流程

上一篇文章,我们详细介绍了spring是如何通过加载xml配置文件,将beanfactry创建成功的,接着核心流程,我们继续说下beanFactory和Bean的后置处理流程。 //留给子类的模板方法,允许子类继续对工厂执行一些处理&#xff1b…

二、【海报合成的创意】

文章目录 多分析他人海报,逐渐学会生成自己的创意关键词创意寻找素材寻找创意灵感的网站 那么如何快速生成创意? 多分析他人海报,逐渐学会生成自己的创意 关键词创意 从上图中我们可以看到,该海报中主要突出的主体是耳机。突出的…

【Git企业开发】第一节.Git 的分支管理

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Git企业级开发 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&#xff0…

java后端返回数据给前端时去除值为空或NULL的属性、忽略某些属性

目录 一、使用场景 二、环境准备 1、引入依赖 2、实体类 三、示例 1、不返回空值 (1)方式 (2)测试 (3)说明 2、不返回部分属性 (1)方式 (2)测试 一、使用场景 在开发过程中,有时候需要将后端数据返回前端,此时有些数据为空属性不需要返回&…

SSM度假村管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 度假村管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要 采用B/S模式开发…

[LaTeX] [数学符号] \mathbb{1}的各种替代方案:解决在 LaTeX 中输入黑板粗体的数字

[LaTeX] [数学符号] \mathbb{1}的各种替代方案:解决在 LaTeX 中输入黑板粗体的数字_latex mathbb-CSDN博客文章浏览阅读5w次,点赞36次,收藏80次。本文介绍如何在 LaTeX 中输入黑板粗体的数字。_latex mathbbhttps://blog.csdn.net/xovee/arti…

FRP内网穿透(待续)

FRP内网穿透技术原理: FRP可以将内网服务主机以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 1.GITHUB下载FRP 2.云服务器安装FRP修改配置 3.本地计算机安装FRP修改配置

R-FCN: Object Detection via Region-based Fully Convolutional Networks(2016.6)

文章目录 AbstractIntroduction当前最先进目标检测存在的问题针对上述问题,我们提出... Our approachOverviewBackbone architecturePosition-sensitive score maps & Position-sensitive RoI pooling Related WorkExperimentsConclusion 原文链接 源代码 Abstr…

iOS的应用生命周期以及应用界面

在iOS的原生开发中,我们需要特别关注两个东西:AppDelegate和ViewController。我们主要的编码工作就是在AppDelegate和ViewControlle这两个类中进行的。它们的类图如下图所示: AppDelegate是应用程序委托对象,它继承了UIResponder类…

业务设计——责任链验证推翻 if-else 炼狱

责任链模式 1. 什么是责任链模式 在责任链模式中,多个处理器依次处理同一个请求。一个请求先经过 A 处理器处理,然后再把请求传递给 B 处理器,B 处理器处理完后再传递给 C 处理器,以此类推,形成一个链条,链…

Proteus仿真--左右来回流水灯仿真(仿真文件+程序)

本文主要介绍基于51单片机的流水灯仿真(完整仿真源文件及代码见文末链接) 仿真运行视频 Proteus仿真--基于51单片机的流水灯仿真(左右来回) 附完整Proteus仿真资料代码资料 百度网盘链接: https://pan.baidu.com/s/1pS1rHGOhwYgP…

springboot+vue基于协同过滤算法的私人诊所管理系统的设计与实现【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…