我正在从数据库的列中读取一些斑点,它们使用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/