当前位置: 首页 > 面试题库 >

使用Apache commons-io IOUtils.closeQuietly安全吗?

毕瀚
2023-03-14
问题内容

这是代码吗

    BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"));
    try {
        bw.write("test");
    } finally {
        IOUtils.closeQuietly(bw);
    }

安全与否?据我了解,当我们关闭BufferedWriter时,它将刷新其缓冲区到基础流,并且可能由于错误而失败。但是IOUtils.closeQuietly
API表示任何异常都将被忽略。

是否有可能由于IOUtils.closeQuietly而导致数据丢失未引起注意?


问题答案:

对于以下代码的javadoc,代码应如下所示closeQuietly()

BufferedWriter bw = null;

try {
    bw = new BufferedWriter(new FileWriter("test.txt"));
    bw.write("test");
    bw.flush(); // you can omit this if you don't care about errors while flushing
    bw.close(); // you can omit this if you don't care about errors while closing
} catch (IOException e) {
    // error handling (e.g. on flushing)
} finally {
    IOUtils.closeQuietly(bw);
}

closeQuietly()不用于一般用途,而不是close()直接在Closable上调用。它的预期用例是确保finally块内的闭合-
在此之前,必须完成所有需要的错误处理。

这意味着,如果你想要的通话过程中的异常反应close()flush()那么你已经作出处理的正常方式。closeQuietly()在您的finally块中添加仅可确保关闭,例如,当刷新失败且try块中未调用close时。



 类似资料:
  • 问题内容: 根据PHP文档,从mysql表中获取最后插入的ID。 我的问题是,如果我有一个网站每秒向数据库插入2行以上,是否可以使用并获得之前在查询行中引用的正确ID ? 问题答案: 从MySQL手册: 生成的ID在每个连接的服务器中维护。这意味着函数返回给定客户端的值是针对该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。即使其他客户端生成自己的AU

  • 问题内容: 使用HttpURLConnection时,如果我们不“获取”并使用它,是否需要关闭InputStream? 即安全吗? 其次, 在完全读取所有内容之前 关闭InputStream是否安全? 是否存在使基础套接字处于ESTABLISHED或CLOSE_WAIT状态的风险? 问题答案: 在读取所有内容之前关闭InputStream是否安全? 您需要先关闭输入流中的所有数据,然后再关闭它,以

  • 问题内容: 有人设置伪装的Maven存储库和/或IP流以提供伪装的原始但被注入恶意或有害代码的库副本的风险和可能性或场景是什么? 采取哪些步骤和措施来预防此类风险和可能性? 问题答案: 我想一个专门的,机智的攻击者可以执行一次MITM攻击,并拦截对公共Maven存储库的所有请求,然后将恶意字节码小心地注入JAR工件中,然后重新计算并提供SHA1哈希值。 对于客户端来说,它看起来像是合法的工件:二进

  • 问题内容: 我打算用来将一些属性从应用程序层(特别是消息驱动的Bean)传递到不能直接注入或传递参数的持久性生命周期回调(EclipseLink中的会话侦听器,实体生命周期回调等),并且该回调通过JNDI 获取。 这似乎可以正常工作,但是我是否缺少任何隐藏的陷阱,例如线程安全性或对象寿命?(假设要传递的属性值是不变的,如String或Long。) 样本豆代码 然后使用EJBContext的回调 我

  • 这是如此直接,所以如果我有我的值作为我的关键字,我可以做搜索和排序在一定程度上。但我唯一的问题是有一个警告说明不要使用KEYS命令。不确定Spring是否处理了,请提供您的想法。

  • 问题内容: 我正在尝试使用RestTemplate和Jackson json转换器调用Restful JSON服务。现在,为了调用该服务,我需要传递一个安全性cookie。我可以通过使用URLConnection来实现(请参见下面的代码) RestTemplate中与此并行的是什么?这是我一直在使用RestTemplate调用Restful Service的代码片段: 我无法弄清楚在使用RestT