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

Byte []到InputStream或OutputStream

漆雕育
2023-03-14
问题内容

我的数据库表中有一个blob列,必须byte[]在Java程序中将其用作映射,并使用此数据将其转换为InputStreamOutputStream。但是我不知道这样做的时候内部会发生什么。有人能简要解释一下我进行此转换时发生了什么吗?


问题答案:

您可以按以下方式创建和使用字节数组I / O流:

byte[] source = ...;
ByteArrayInputStream bis = new ByteArrayInputStream(source);
// read bytes from bis ...

ByteArrayOutputStream bos = new ByteArrayOutputStream();
// write bytes to bos ...
byte[] sink = bos.toByteArray();

假设你正在使用JDBC驱动程序实现了标准的JDBC
Blob接口
(不是所有的事),你可以
同时 连接InputStreamOutputStream使用到BLOB
getBinaryStreamsetBinaryStream方法1,您也可以获取和设置直接字节。

(通常,您应该采取适当的步骤来处理所有异常并关闭流。但是,在上面的示例中,关闭bisbos是不必要的,因为它们与任何外部资源都没有关联;例如,文件描述符,套接字,数据库连接。)

1-该setBinaryStream方法实际上是一种吸气剂。去搞清楚。



 类似资料:
  • 问题内容: 我需要将Java BigInteger实例转换为以字节为单位的值。从API中,我获得了此方法,该方法返回一个byte [],其中包含此BigInteger的二进制补码表示形式。 因为我所有的数字都是正的128位(16字节)整数,所以我不需要2的补码形式,即给我128位+符号位(129位)… 有没有一种方法可以直接从BigInteger获取标准(无2的补码形式)表示形式? 如果不是,我如

  • 问题内容: 我正在读取dds纹理,但是自从构建了jar之后,我无法通过访问这些纹理,而不得不使用它。 所以,我需要知道我怎么能获得从。 附言: 无论通过第3部分库,我都只需要它起作用 问题答案: 对我而言,在这种情况下最好的是Apache commons-io来处理此任务和类似任务。 该类型具有静态方法来读取和返回。 在内部,这会创建一个并将字节复制到输出,然后调用。 UPDATE :只要你有,如

  • 问题内容: 我有这个InputStream: 如何将其转换为ServletInputStream? 我努力了: 但不起作用。 编辑: 我的方法是这样的: 我正在尝试将所有请求都转换为小写。 问题答案: 试试这个代码。

  • 我最近想知道像InputStream int read(byte[]b)方法这样的函数是如何工作的。我知道Java总是通过值传递方法参数,而不是通过引用。 知道了这一点,我不理解在将空字节数组传递给read方法(假设InputStream中有要读取的字节)后,它如何包含值。据我所知,只有传递给read方法的值会在内部被触摸,唯一的输出应该是read字节数(整数返回值)。但字节数组仍然以某种方式填充

  • 问题内容: 我的背景是.net,我刚接触Java。我正在为公司的Java团队做一些工作,架构师需要我实现采用InputStream(java.io)对象的方法。为了实现该方法的目的,我需要将其转换为字节数组。是否有捷径可寻? 问题答案: 最简单的方法是创建一个new ,将字节复制到其中,然后调用:

  • 问题内容: 我有一个通过以下方法读入列表的文件: 是否有任何不错的(单行)Java 7/8 / nio2方法可以在可执行Jar内的文件中实现相同的功能(大概必须使用InputStream读取)?也许是一种通过类加载器打开InputStream的方法,然后以某种方式将其强制/转换/包装为Path对象?还是包含与File.readAllLines(…)等效的InputStream或Reader的一些新