前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >try()catch{}写法

try()catch{}写法

作者头像
阿超
发布于 2022-08-16 10:42:37
发布于 2022-08-16 10:42:37
1.3K00
代码可运行
举报
文章被收录于专栏:快乐阿超快乐阿超
运行总次数:0
代码可运行

当生活像一首歌那样轻快流畅时,笑颜常开乃易事;而在一切事都不妙时仍能微笑的人,是真正的乐观。——威尔科克斯

曾经我们使用javaIO流复制文件时是这么写的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.ruben;

import java.io.*;
import java.util.Optional;

/**
 * @ClassName: FileDemo
 * @Description: 我还没有写描述
 * @Date: 2021/1/10 0010 21:38
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
public class FileDemo {
    private static final String FILE_PATH = "D:/file/files/ps/2077.png";
    private static final String TARGET_PATH = "D:/file/files/ps/1977.png";

    public static void main(String[] args) {
        InputStream dataInputStream = null;
        OutputStream output = null;
        try {
            dataInputStream = new FileInputStream(FILE_PATH);
            output = new FileOutputStream(TARGET_PATH);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = dataInputStream.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            Optional.ofNullable(output).ifPresent(outputStream -> {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
            Optional.ofNullable(dataInputStream).ifPresent(inputStream -> {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
        }
    }
}

可以看到在finally里我们关闭流的时候要写一大堆,非常麻烦

现在推荐使用这种写法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.ruben;

import java.io.*;
import java.util.Optional;

/**
 * @ClassName: FileDemo
 * @Description: 我还没有写描述
 * @Date: 2021/1/10 0010 21:38
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
public class FileDemo {
    private static final String FILE_PATH = "D:/file/files/ps/2077.png";
    private static final String TARGET_PATH = "D:/file/files/ps/1977.png";

    public static void main(String[] args) {
        try (
                InputStream dataInputStream = new FileInputStream(FILE_PATH);
                OutputStream output = new FileOutputStream(TARGET_PATH)
        ) {
            byte[] buffer = new byte[1024];
            int length;
            while ((length = dataInputStream.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用try()catch{}写法,可以自动关闭流

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
屏蔽词过滤器
黑发不知勤学早,白首方恨读书迟。 ——颜真卿 我们可能想使用本地配置词库、过滤器的方式去做全局屏蔽词处理 这里针对三种参数情况 1.requestParam传参:http://localhost:
阿超
2022/08/17
7170
屏蔽词过滤器
使用java操作word
Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建、读取、编辑、转换和打印等功能集成到自己的 Java 应用程序中。作为一款完全独立的组件,Spire.Doc for Java 的运行环境无需安装 Microsoft Office。
阿超
2022/08/16
1.6K0
实用避免空指针的工具类
一星陨落,黯淡不了星空灿烂;一花凋零,荒芜不了整个春天。——巴尔扎克 package com.ruben.utils; import com.ruben.pojo.User; import org.thymeleaf.expression.Lists; import sun.reflect.misc.ReflectUtil; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import
阿超
2022/08/16
4820
Optional再扩展
他们之所以做得到,就因为他们认为他们能够做到。—— 维吉尔 关于Optional的介绍,之前的博客已经说过了,这里就不再赘述 这里写点常用的例子 package com.ruben; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; import java.util.stream.Stream; /** * @ClassName: Op
阿超
2022/08/16
6780
Optional再扩展
RabbitMQ安装
找到安装目录,我这里是C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin
阿超
2022/08/16
2230
RabbitMQ安装
jquery和springBoot文件上传
完整源码:https://gitee.com/VampireAchao/simple-scaffold.git
阿超
2022/08/17
1K0
jquery和springBoot文件上传
Java实现本地 fileCopy
  Java中流是重要的内容,基础的文件读写与拷贝知识点是很多面试的考点。故通过本文进行简单测试总结。
云海谷天
2022/08/09
2750
Java实现本地 fileCopy
html转图片
真话说一半常是弥天大谎。——富兰克林 引入依赖 <!-- html转图片 --> <dependency> <groupId>com.github.xuwei-k</groupId> <artifactId>html2image</artifactId> <version>0.1.0</version> </dependency> 我这里稍微封装了一下 package com.ruben.utils; import gui.ava.html.image.generator.H
阿超
2022/08/16
13.8K0
html转图片
Java-Java I/O流解读之基于字节的I / O和字节流
编写简单的 I / O操作很简单,仅仅涉及到很少的类和方法。 但是编写高效,便携式I / O非常困难,特别是如果我们必须处理不同的字符集。 这就解释了为什么有这么多的I / O包(在JDK 1.7中有9个)!
小小工匠
2021/08/17
1.1K0
第39节:Java当中的IO
流:在Java中输入和输出是通过流的类来实现的,Java提供了一套丰富的流类,可导入java.io,这样就可以完成输入和输出了,也同样可以实现网络操作等。
达达前端
2019/07/03
4100
第39节:Java当中的IO
java---文件操作
InputStream输入流 是从程序外部将文件内容读入到程序中 InputStream是一个抽象类。
用户10787181
2023/10/17
2600
java---文件操作
【Java 基础篇】Java字节字符流详解:轻松读写文本与二进制数据
在Java编程中,对文件和数据的读写操作是非常常见的任务。为了满足不同需求,Java提供了多种流类来处理输入和输出。本篇博客将详细介绍Java中的字节流和字符流,以及它们的使用方法,帮助初学者更好地理解和运用这些流来处理文件和数据。
繁依Fanyi
2023/10/12
6110
【Java 基础篇】Java字节字符流详解:轻松读写文本与二进制数据
作业的参考
public class HttpResponse implements HttpServletResponse,Response { private static final Logger LOGGER = LoggerFactory.getLogger(HttpResponse.class); private OutputStream outputStream; private HttpRequest request; private PrintWriter writ
热心的社会主义接班人
2019/08/07
6110
Java 持久化之 -- IO 全面整理(看了绝不后悔)
IO包括输入流和输出流,输入流指的是将数据以字符或者字节形式读取到内存 分为字符输入流和字符输入流
房上的猫
2019/01/24
5720
Java 持久化之 --  IO 全面整理(看了绝不后悔)
探秘Tomcat——从一个简陋的Web服务器开始
前言:   无论是之前所在实习单位小到一个三五个人做的项目,还是如今一个在做的百人以上的产品,一直都能看到tomcat的身影。工作中经常遇到的操作就是启动和关闭tomcat服务,或者修改了摸个java文件,编译该文件,将生成的class文件塞到tomcat目录下相应的jar包中去,以使其生效,但是也可以热部署,不需要这么繁琐的操作。   总之,一直以来都是习惯了tomcat的存在,没有深究tomcat的运行机制和原理,上一次对于tomcat源码的跃跃欲试还是去年的事儿了——《探秘Tomcat(一)——Mye
JackieZheng
2018/01/16
7440
探秘Tomcat——从一个简陋的Web服务器开始
探秘Tomcat——一个简易的Servlet容器
即便再简陋的服务器也是服务器,今天就来循着书本的第二章来看看如何实现一个servlet容器。 背景知识   既然说到servlet容器这个名词,我们首先要了解它到底是什么。 servlet   相比你或多或少有所了解。servlet是用java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。 容器   容器的概念很大,在这里
JackieZheng
2018/01/16
7260
Java程序员的日常—— IOUtils总结
以前写文件的复制很麻烦,需要各种输入流,然后读取line,输出到输出流...其实apache.commons.io里面提供了输入流输出流的常用工具方法,非常方便。下面就结合源码,看看IOUTils都有什么用处吧! 代码参考https://github.com/xinghalo/JDK-Learning 常用的静态变量 在IOUtils中还是有很多常用的一些变量的,比如换行符等等 public static final char DIR_SEPARATOR_UNIX = '/'; public sta
用户1154259
2018/01/17
2.5K0
手写一个简化版Tomcat
      Tomcat作为Web服务器深受市场欢迎,有必要对其进行深入的研究。在工作中,我们经常会把写好的代码打包放在Tomcat里并启动,然后在浏览器里就能愉快的调用我们写的代码来实现相应的功能了
我叫刘半仙
2018/04/16
9520
手写一个简化版Tomcat
Java-IO流
JDK提供了一套用于IO操作的框架,为了方便我们开发者使用,就定义了一个像水流一样,根据流的传输方向和读取单位,分为字节流InputStream和OutputStream以及字符流Reader和Writer的IO框架
用户9645905
2023/10/23
1820
Java-IO流
对文件操作得一些总结
1.读取txt文件,然后从数据库从查询数据,并且写到txt文件中 public void getPhonehId() { List<String> list = new LinkedList<>(); //1读取数据库中得图片 try { String encoding = "GBK"; File file = new File("C:\\Users\\Administrator\\Desktop\\name.
用户5927264
2021/01/26
3670
相关推荐
屏蔽词过滤器
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文