`

byte[]类型,blob类型,inputstream类型相互转换

阅读更多

【转帖】

在我们的程序开发当中,经常会用到java.sql.Blob、byte[]、InputStream之间的相互转换,但在JDK的API当中,又没有直接给我们提供可用的API,下面的程序片段主要就是实现它们之间互换的util.

一、byte[]=>Blob

我们可以通过Hibernate提供的表态方法来实现如:

org.hibernate.Hibernate.Hibernate.createBlob(new byte[1024]);

二、Blob=>byte[]

目前没有找到好一点的API提供,所以只能自已来实现。示例如下:

/**
* 把Blob类型转换为byte数组类型
* @param blob
* @return
*/
private byte[] blobToBytes(Blob blob) {

BufferedInputStream is = null;

try {
is = new BufferedInputStream(blob.getBinaryStream());
byte[] bytes = new byte[(int) blob.length()];
int len = bytes.length;
int offset = 0;
int read = 0;

while (offset < len && (read = is.read(bytes, offset, len - offset)) >= 0) {
offset += read;
}
return bytes;
} catch (Exception e) {
return null;
} finally {
try {
is.close();
is = null;
} catch (IOException e) {
return null;
}
}
}

三、InputStream=>byte[]

private byte[] InputStreamToByte(InputStream is) throws IOException {  

ByteArrayOutputStream bytestream = new ByteArrayOutputStream();  
int ch;  
while ((ch = is.read()) != -1) {  
bytestream.write(ch);  
}  
byte imgdata[] = bytestream.toByteArray();  
bytestream.close();  

return imgdata;  
}  

四、byte[] => InputStream

byte[]到inputStream之间的转换很简单:InputStream is = new ByteArrayInputStream(new byte[1024]);  

五、InputStream => Blob

可通过Hibernate提供的API:Hibernate.createBlob(new FileInputStream(" 可以为图片/文件等路径 "));

六、Blob => InputStream

Blog转流,可通过提供的API直接调用:new Blob().getBinaryStream();

以上片段可作为读者参考。

0
0
分享到:
评论

相关推荐

    Blob、InputStream、byte 互转

    本文将详细介绍如何实现`Blob`、`InputStream`、`byte[]`之间的相互转换,并提供具体的代码示例。 #### Blob与byte[]之间的转换 1. **Blob转byte[]** ```java private byte[] blobToBytes(Blob blob) { ...

    Java 类型相互转换byte[]类型,Blob类型详细介绍

    本篇文章将详细讲解如何在Java中进行`byte[]`与`Blob`类型的相互转换。 首先,`byte[]`是Java中的基本数据类型,用于存储和操作二进制数据,如图像、音频或任何其他非文本文件。而`Blob`是Java SQL API中的一个接口...

    blob,将byte二进制转成pdf

    3. 使用PDF库将InputStream转换为PDDocument对象。 4. 可能会进行一些处理,比如添加水印、加密等。 5. 将PDDocument对象保存到临时文件或直接将其内容作为响应流发送给客户端。 总的来说,这个过程涉及到数据库...

    java读取大字段blob类型

    4. **读取BLOB数据**:通过`ResultSet`获取到`BLOB`对象,并将其转换为`InputStream`进行读取。 ```java if (rs.next()) { oracle.sql.BLOB content = (oracle.sql.BLOB) rs.getBlob("content"); ...

    sql server中的image类型的数据导出到oracle的clob字段中

    在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中。 Image 类型在 SQL Server 中的应用 ...

    Hiberante读取BLOB数据类型.

    在Java的持久化框架Hibernate中,BLOB(Binary Large Object)数据类型被用来存储大量二进制数据,如图片、音频、视频或者大型文本文件。本文将深入探讨Hibernate如何读取BLOB类型的数据,以及在实际开发中需要注意...

    对blob大数据的操作——图片上传与显示*(自己实践可用)

    在图片显示过程中,我们可以使用HQL语句来获取数据库中的Blob数据,然后将其转换成InputStream类型。最后,我们可以在Struts.xml配置文件中配置返回的图片结果。 后期收尾 在最后,我们需要对Service层添加事务...

    java将图片写入数据库,并读出来(blob clob)

    这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...

    Hibernate对Blob,Clob的操作

    InputStream is = blob.getBinaryStream(); // 处理输入流,例如写入文件 Clob clob = entity.getTextData(); Reader reader = clob.getCharacterStream(); // 读取字符流,例如转换为字符串 ``` 值得注意的是,...

    在Oracle中存取BLOB对象实现文件的上传和下载.txt

    - 将结果集中的BLOB对象转换为适当的类型(如`oracle.sql.BLOB`或`weblogic.jdbc.vendor.oracle.OracleThinBlob`)。 - **读取BLOB数据并写入文件:** - 获取BLOB对象的输入流`getBinaryInputStream()`。 - 创建...

    Hibernate对BLOB CLOB操作

    为了实际读取和写入BLOB和CLOB,你需要从文件系统读取数据,然后将其转换为InputStream或Reader,再使用Hibernate提供的方法。例如,你可以使用FileInputStream读取文件,然后将它转换为BLOB,类似地,使用...

    BLOB字段处理

    然后,通过`getBinaryStream`方法将BLOB转换为InputStream,这样就可以将数据逐块读取到缓冲区中,并最终写入到目标文件中。 ### 总结 处理BLOB字段时,确保使用适当的流操作和错误处理机制是非常重要的。使用`...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    为了解决这一问题,我们需要采用一种方法来安全地实现这两种类型的相互转换。 #### 二、解决方案 为了解决 WebLogic 下 Oracle CLOB 类型转换的问题,可以通过反射机制来调用 `weblogic.jdbc.wrapper.Clob_oracle_...

    JDBC中操作Blob、Clob等对象

    在JDBC(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob(Character Large Object)则用于存储大量的文本...

    使用Hibernaet存储MYSQL表中BLOB字段的问题

    4. **数据持久化**:在保存BLOB数据时,需要将二进制数据转换为Blob对象,这通常可以通过InputStream实现。同样,在读取BLOB数据时,应将其转换回所需的格式,如File或byte数组。 5. **事务管理**:由于BLOB操作...

    【IT十八掌徐培成】Java基础第24天-01.Blob字段操作.zip

    InputStream is = blob.getBinaryStream(); FileOutputStream fos = new FileOutputStream("output_file_path"); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1...

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    在Java编程中,Blob(Binary Large Object)是用于存储大对象的数据类型,如图像、音频、视频或任何二进制数据。Blob字段操作是数据库管理中的常见任务,尤其是在需要将图片或文件保存到关系型数据库时。本篇将详细...

    java存取oracle中的COLB类型数据.docx

    - 需要注意日期格式的转换以及时区等问题,可能需要使用`java.sql.Timestamp`等更精确的时间类型。 3. **连接池技术** - 在与数据库交互时,推荐使用连接池技术以提高性能和资源利用率。 - J2EE环境中可以通过...

    JDBC中的Results相关函数

    - `getBlob()`: 获取Blob类型的数据,返回一个java.sql.Blob对象,代表大二进制数据。 4. 高级类型的方法: - `getBigDecimal()`: 获取Decimal、Numeric类型的数据,返回一个BigDecimal对象,用于精确的浮点数值...

    java Web 读取数据库存储图片

    // 将InputStream转换为byte[] byte[] imageBytes = new byte[(int) blobImage.length()]; is.read(imageBytes); // 这里可以进一步处理byte[], 如保存到本地或上传到服务器 } } catch (SQLException e) { e...

Global site tag (gtag.js) - Google Analytics