import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.SQLException;
import javax.servlet.ServletOutputStream;
public class ByteStreamConverter {
// 将流文件转换为二进制文件
public byte [] toByteArray(Blob fromBlob) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
return toByteArrayImpl(fromBlob, baos);
} catch (SQLException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (baos != null ) {
try {
baos.close();
} catch (IOException ex) {
}
}
}
}
// 将流文件转换为二进制文件的实现
public byte [] toByteArrayImpl(Blob fromBlob, ByteArrayOutputStream baos)
throws SQLException, IOException {
byte [] buf = new byte [ 2048 ];
InputStream is = fromBlob.getBinaryStream();
try {
for (;;) {
int dataSize = is.read(buf);
if (dataSize == - 1 )
break ;
baos.write(buf, 0 , dataSize);
}
} finally {
if (is != null ) {
try {
is.close();
} catch (IOException ex) {
}
}
}
return baos.toByteArray();
}
}