我正在从数据库的列中读取一些斑点,它们使用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-InputStream→Write-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 - 加快从InputStream读取和使用FileOutputStream写入的速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40549513/

10-11 07:49