Code snippet for creating a file from the contents of a blob in Java

I have some files stored in the blob column of the database in Oracle 9

I want to store those files in the file system

It should be easy, but I didn't find the right clip

How do I do this in Java?

PreparedStatement ptmst = ...
 ResutlSet rs = pstmt.executeQuery();
 rs.getBlob();
 // mistery 
 FileOutputStream out = new FileOutputStream();
 out.write(); // etc et c

I know it should be like this... I don't know what was commented as mistery

thank you

edit

I finally got this question from David

This is my lazy realization:

PreparedStatement pstmt = connection.prepareStatement("select BINARY from MYTABLE");
ResultSet rs = pstmt.executeQuery();
while( rs.next() ) {
    Blob blob = rs.getBlob("BINARY");
    System.out.println("Read "+ blob.length() + " bytes ");
    byte [] array = blob.getBytes( 1,( int ) blob.length() );
    File file = File.createTempFile("something-",".binary",new File("."));
    FileOutputStream out = new FileOutputStream( file );
    out.write( array );
    out.close();
}

Solution

You need to take the blob as the input stream and dump its contents to the output stream So "suffering" should be like this:

Blob blob = rs.getBlob(column);
InputStream in = blob.getBinaryStream();
OutputStream out = new FileOutputStream(someFile);
byte[] buff = new byte[4096];  // how much of the blob to read/write at a time
int len = 0;

while ((len = in.read(buff)) != -1) {
    out.write(buff,len);
}

If you find yourself doing a lot of such IO work, you can see the details of using Apache commons io Then, all the contents after setting the stream are as follows:

IoUtils.copy(in,out);
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>