我正在从数据库的列中读取一些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-InputStream →写入FileOutputStream ?
提前致谢。
答案 0 :(得分:2)
使用缓冲区进行读写。
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也提出了更好的建议......
答案 1 :(得分:1)
假设你有 Java 7或更高版本并且你不想重新发明轮子,请考虑使用Files.copy(InputStream in, Path target, CopyOption... options)
作为下一个:
public JButton clearButton(){ // clearButton method
JButton clearButton = new JButton("CLEAR"); // new button of type JButton
clearButton.setPreferredSize(new Dimension(200,30)); // dimension of the button
clearButton.setLocation(400,450);
return clearButton; // return reference to the JButton object
}