gpt4 book ai didi

java - 如何调整 BufferedInputStream read()?

转载 作者:行者123 更新时间:2023-12-02 00:52:08 26 4
gpt4 key购买 nike

我正在从 Oracle 数据库读取 BLOB 列,然后将其写入文件,如下所示:

    public static int execute(String filename, BLOB blob)
{

int success = 1;

try
{
File blobFile = new File(filename);
FileOutputStream outStream = new FileOutputStream(blobFile);
BufferedInputStream inStream = new BufferedInputStream(blob.getBinaryStream());

int length = -1;
int size = blob.getBufferSize();
byte[] buffer = new byte[size];

while ((length = inStream.read(buffer)) != -1)
{
outStream.write(buffer, 0, length);
outStream.flush();
}

inStream.close();
outStream.close();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("ERROR(img_exportBlob) Unable to export:"+filename);
success = 0;
}
}

文件大小约为3MB,读取缓冲区需要40-50秒。它实际上是一个3D图像数据。那么,有什么办法可以减少这个时间吗?

最佳答案

考虑到 blob 已经有了缓冲区的概念,使用 BufferedInputStream 可能实际上损害性能 - 它可能会变得更小read() 调用,进行不必要的网络调用。

尝试完全摆脱 BufferedInputStream,直接从 blob 的二进制流中读取。这只是一个想法,但值得一试。哦,而且您不需要每次写入时刷新输出流。

(顺便说一句,您应该在finally block 中关闭流 - 否则如果有任何抛出异常,您将泄漏句柄。)

关于java - 如何调整 BufferedInputStream read()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2565559/

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