加速从 InputStream 读取和使用 FileOutputStream 写入

Speeding up reading from InputStream and writing with FileOutputStream

我正在从数据库的列中读取一些 blob,并使用 FileOutputStream 将它们保存到文件中。

这是我的代码:

InputStream binaryFile = rs_ivol.getBinaryStream("BLOB_COLUMN_FROM_BY_DB");
FileOutputStream outputFile = new FileOutputStream(myoutpath);  
int aux = 0;
while ((aux = binaryFile.read()) != -1)
{
    outputFile.write(aux);
}

问题是这非常慢。我需要转换超过 58225 个项目,最多可能需要 24 小时。

有人能告诉我如何使 read-from-InputStreamwrite-to-FileOutputStream 更快吗?

提前致谢。

使用缓冲区读写。

InputStream binaryFile = rs_ivol.getBinaryStream("BLOB_COLUMN_FROM_BY_DB");
FileOutputStream outputFile = new FileOutputStream(myoutpath);  
int aux = 0;
byte[] buffer = new byte[1024];
while ((aux = binaryFile.read(buffer)) > 0)
{
    outputFile.write(buffer, 0, aux);
}

编辑: 请参阅 DwB 的回答以了解滚动您自己的缓冲区的替代方法...

编辑: 另外@Nicolas Filotto 也有更好的建议...

假设您有 Java 7 或更高 并且您不想重新发明轮子,请考虑使用 Files.copy(InputStream in, Path target, CopyOption... options) 作为下一步:

try (InputStream binaryFile = rs_ivol.getBinaryStream("BLOB_COLUMN_FROM_BY_DB")) {
    Files.copy(binaryFile, Paths.get(myoutpath), StandardCopyOption.REPLACE_EXISTING);
}