- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
BlobDomain blob = mrow.getFileText();
StringBuffer o = new StringBuffer("");
if (blob != null) {
InputStream in = null;
try {
in = blob.getBinaryStream();
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) > 0) {
o.append(new String(buf));
buf = new byte[1024];
}
}catch(Exception e){
}finally{
try{
if(in != null)
in.close();
}catch(Exception ee){}
}
该 blob 是否需要任何形式的关闭?
最佳答案
Blob GetBinaryStream requires closing?
可能不是。但无论如何关闭它是个好主意。
但是,我强烈建议您使用 Java 7+“尝试使用资源”语法。它更干净、更简单、更可靠。像这样:
try (InputStream in = blob.getBinaryStream()) {
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) > 0) {
o.append(new String(buf));
buf = new byte[1024];
}
}
有一个隐式的 finally
可以关闭 in
流并处理 close()
调用可能引发的异常。
does the blob need any sort of closing?
您从中获取 Blob
的 Connection
、Statement
和/或 ResultSet
需要“管理” 。如果你做得正确,我认为 Blob
不需要进一步管理......尽管你可以选择 free()
它来提前释放资源。
我希望您的代码中的异常处理与您的真实代码完全不同。您在异常处理中做了两件坏事:
您正在“压制”异常;即捕获他们并扔掉所有证据。这使得事后调试非常困难。
捕获异常
几乎总是一个错误。您很可能会捕获各种您没有预料到会发生的异常;例如由代码中的错误引起的 NPE。
同时做这两件事......真的很糟糕。
如果您坚持手动进行资源管理(关闭),则应该在finally
block 中进行。 (在Java教程等中阅读相关内容)
关于java - Blob GetBinaryStream 需要关闭吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28288149/
我的数据库表中有一个 varchar2 类型的 column1 。我从 java 读到了这个专栏 java.sql.ResultSet r = s.executeQuery("Select * fr
当我从数据库中读取 blob 数据时,我得到了 null 值。可能是什么问题?有人可以帮我解决这个问题吗? Connection con = null; PreparedStatement psS
我有一个从 oracle 数据库中获取 blob 的 java 方法(我使用的是 ojdbc8.jar)。此方法将 blob 写入 OutputStream(对于客户端): // OutputStre
我有以下代码: BlobDomain blob = mrow.getFileText(); StringBuffer o = new StringBuffer("");
在 mysql 中我有表 CREATE TABLE `articles_attachments` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
当 blob 列在数据库上具有空值时,我遇到 getBinaryStream 方法的问题,这是我的代码: public void getAderent(int id ) throws IOExcept
如何使用 jdbc 将整个表写入平面文件(文本文件)?到目前为止,我尝试了以下方法: Statement statement = connection.createStatement(); Re
我正在使用 Hibernate 3.1 和 Oracle 10 DB。 blob 在 Hibernate 实体中定义为 @Lob @Basic @Column ,对应于相关的数据库表。错误 -java
有 3 种不同的方法可以从 ResultSet 的 BLOB 列中获取数据 getBytes getBinaryStream getBlob 另外,getBlob 返回的 Blob 对象也有 getB
我是一名优秀的程序员,十分优秀!