我需要用 try/catch/finally 块包围 fileInputStream.close 吗?它是如何完成的?

2023-11-26

我有以下 Java 类,它做一件事,从config.properties.

当到了关闭的时候fileInputStream,我想我在维基百科上读到,将它放在finally块中是很好的。因为它确实在 try/catch 块中工作得很好。

你能告诉我更正吗fileInputStream.close()在最后部分?

配置属性.java 封装底座;

import java.io.FileInputStream;
import java.util.Properties;

public class ConfigProperties {

    public FileInputStream fileInputStream;
    public String property;

    public String getConfigProperties(String strProperty) {

        Properties configProperties = new Properties();
        try {

            fileInputStream = new FileInputStream("resources/config.properties");
            configProperties.load(fileInputStream);
            property = configProperties.getProperty(strProperty);
            System.out.println("getConfigProperties(" + strProperty + ")");

            // use a finally block to close your Stream.
            // If an exception occurs, do you want the application to shut down?

        } catch (Exception ex) {
            // TODO
            System.out.println("Exception: " + ex);
        }
        finally {
            fileInputStream.close();
        }

        return property;
    }
}

解决方案是否只能按照 Eclipse 的建议并在finally 块中执行此操作?

finally {
    try {
        fileInputStream.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

是的,这是 Java 7 之前的常见解决方案。然而,随着 Java 7 的推出,现在有try-带资源语句将自动关闭任何声明的资源try阻止退出:

try (FileInputStream fileIn = ...) {
    // do something
} // fileIn is closed
catch (IOException e) {
    //handle exception
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我需要用 try/catch/finally 块包围 fileInputStream.close 吗?它是如何完成的? 的相关文章

随机推荐

  • 正则表达式验证属性无法正常工作

    我想验证视图模型中的属性以匹配正则表达式 视图模型 using System ComponentModel DataAnnotations namespace ProjectName ViewModels public class View
  • 在 Java 中更改 XML 文件中的一个值的最佳方法是什么?

    我有一个 XML 文件 并且我知道需要更改其值的节点名称 节点名称是 ipAddress 我可以使用 JDOM 获取文档 获取节点 更改值并写入它 或者我可以编写 XSLT 文件 代码更改值来自 Java 所以我的问题是哪个选项更好 XML
  • Tensorflow的非对称填充假设

    为什么 TensorFlow 选择在右下角填充 With SAME填充 对我来说 在第一个真实像素处启动内核的中心锚点是合乎逻辑的 由于使用了不对称填充 这导致与其他一些框架存在差异 我确实明白 原则上不对称填充是好的 因为否则会留下未使用
  • 在 M 天内阅读 N 章书籍的最佳方式

    我遇到过这样一个面试问题 给定一本有 N 章的书 当然每章的页数不同 在必须读完一章的限制下 在 M 天内完成整本书的最佳方法是什么同一天 例子 Chapters 7 5 3 9 10 Days 4 人们应该读一下 Chapter1 on
  • 将现有 Microsoft.AspNet.Identity DB (EF 6) 迁移到 Microsoft.AspNetCore.Identity (EF Core)

    我正在开发一个应用程序 APS net MVC 它使用微软 AspNet Identity 现在我想将我的应用程序修改为 APS net Core 它使用微软 AspNetCore Identity 但这两者在每个模型上都有一些差异 有没有
  • 最新的react-hook-form错误处理与material-ui TextField

    我在使用react hook form 和material ui 时遇到了困难 我准备了一个代码沙盒示例 import TextField from material ui core import React from react impo
  • 多个读者同步,单个作者?

    另一个同步问题 我希望你们不要生气 假设以下场景 一个中心数据结构 非常大 所以我真的不想使其不可变并在发生更改时复制它 我什至不想在内存中保留多个副本 多个读取器线程以只读方式访问该数据结构 并有一个写入器线程在后台保持数据结构最新 我目
  • lua 64位转换问题

    我真的希望对这个主题有一些帮助 有人在需要同时支持 32 位和 64 位的应用程序中使用过 lua 吗 我们目前正在过渡到 64 位 但客户端编译的 lua 脚本遇到了问题 我们无法使用 64 位版本重新编译 因此 实际上我们需要能够在 6
  • IE 不提供保存 ASP.NET 表单的密码

    有时微软会做出一些非常愚蠢的事情 让我头疼 帮我看看事实并非如此 拜托 我正在开发的 ASP NET 3 5 站点的登录页面存在问题 IE 7 或 8 无法忍受打开 6 在用户登录 我检查了其他浏览器 Firefox Chrome 和 Sa
  • laravel安装ui时出现问题如何解决?

    安装 laravel ui 时出现以下错误 Using version 2 0 for laravel ui Problem 1 Conclusion remove laravel framework v6 18 0 Conclusion
  • ModuleNotFoundError:没有名为“google.cloud”的模块

    我正在寻找使用 Google 云文本到语音 API 但遇到了找不到模块的常见问题 我已经尝试过大多数人都有的解决方案 唯一的问题是我使用 Windows 而大多数解决方案都是针对 mac 或 Linux 的 尽管这不应该是一个大问题 我在命
  • Zend Framework:在引导程序中获取请求对象

    如何从引导文件中获取请求对象 我可以尝试这个方法 但不起作用 request new Zend Controller Request Http request Zend Controller FrontController getInsta
  • 如何从 VS2010 立即窗口调用 F# 函数

    在调试 F 应用程序时 我希望能够从 VS2010 立即窗口调用 F 方法 但它似乎不起作用 问题似乎是 F 方法实际上是 FSharpFunc 对象 我尝试使用 Invoke 方法 但交互式窗口无法识别它 Visual Studio 的
  • python odo sql AssertionError: datashape 必须是 Record 类型,得到 0 * {...}

    我正在尝试使用 odo 将 CSV 导入 MySQL 但收到数据形状错误 我的理解是 datashape 采用以下格式 var column type 其中 var 表示可变的行数 我收到以下错误 AssertionError datash
  • Android:如何仅在安装应用程序时调用方法

    我需要调用一个方法 或启动一个活动 或其他方法 来更新包含应用程序所需数据的文件 但我希望它只在第一次安装应用程序时完成一次 因为之后我会自己处理文件的更新 请问怎样才能做到呢 感谢您的任何建议 要在应用程序中只执行一次某件事 您需要这样的
  • jsp中如何显示带有标签的文本

    我想显示一个名为 welcome
  • 将数组划分为 K 个差异最小的子数组

    免责声明 所描述的问题看起来像是竞赛中的任务 我没有参加任何一个 我不知道任何正在进行的比赛 这可能涉及这个问题 如果有的话 我会结束这个问题以保持公平 我有个问题 给定一个由值和整数 K 组成的数组 A 将 A 拆分为恰好 K 个不重叠的
  • 严重:调度程序初始化失败无法加载配置

    我正在开发 Struts 2 应用程序 毕竟我收到以下错误 SEVERE Dispatcher initialization failed Unable to load configuration bean jar file home sa
  • 如何获得枚举的基本类型?

    带有如下声明 enum DrawBoldMode unsigned DBM NONE 0 DBM ITEM 1 lt lt 0 bold just the nearest line DBM SECTION 1 lt lt 1 bold al
  • 我需要用 try/catch/finally 块包围 fileInputStream.close 吗?它是如何完成的?

    我有以下 Java 类 它做一件事 从config properties 当到了关闭的时候fileInputStream 我想我在维基百科上读到 将它放在finally块中是很好的 因为它确实在 try catch 块中工作得很好 你能告诉