gpt4 book ai didi

java - 在 Java 中将非常大的 Blob 对象(大约 3GB)转换为 bytearray

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:25 25 4
gpt4 key购买 nike

我浏览了几个网站,它们显示了将 java.sql.Blob 对象转换为 byte[] 并最终保存为文件的示例代码。

例如 easiest-way-to-convert-a-blob-into-a-byte-array或者 image-to-bytearray-to-blob-and-blob-to-bytearray-to-image-conversion-issues-in-j

大部分建议使用blob.getBytes(pos, length)IE。 byte[] blobBytes = blob.getBytes(1, (int) blob.length());

但是,如果 blob 的大小超过整数的最大值(例如 3 GB),blobBytes 对象将被截断并且创建的文件将格式错误

有没有办法克服它的大小限制?

还是我必须使用 blob.getBinaryStream(1, blob.length()) 获取 InputStream 并将其进一步处理为 byte[]?

最佳答案

最简单的方法是使用 Apache IOUtils(您需要将其包含在您的项目中)并将流复制到磁盘。

InputStream blobInputStream = blob.getBinaryStream();
OutputStream fileOutputStream = new FileOutputStream(new File("/path/to/file.out"));
IOUtils.copyLarge(blobInputStream, fileOutputStream);

copyLarge(InputStream input, OutputStream output) Copies bytes from a large (over 2GB) InputStream to an OutputStream.

编辑:您也可以使用 blob.getBytes,但您需要在循环中一次提取合理数量的字节(例如 8192),然后写入 FileOutputStream。

关于java - 在 Java 中将非常大的 Blob 对象(大约 3GB)转换为 bytearray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34151481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com