Java to write a blob to disk, does any one have the java to read a blob from disk

  • From: "Juan Cachito Reyes Pacheco" <jreyes@xxxxxxxxxxxxxxxx>
  • To: <oracle-l@xxxxxxxxxxxxx>
  • Date: Thu, 26 Feb 2004 11:38:15 -0400

From Mark A. Williams  from Indianapolis, IN USA
Here is the script in java to save a blob to disk (works perfectly)

Adjust for your environment and line wrapping may need to be undone...

connect / as sysdba;

grant javauserpriv to scott;

begin
  dbms_java.grant_permission('SCOTT',
'java.io.FilePermission','c:\temp\blob.txt', 'write');
end;
/

connect scott/tiger;

create or replace java source named "exportBLOB" as
  import java.lang.*;
  import java.io.*;
  import java.sql.*;
  import oracle.sql.*;
public class exportBLOB
{
  public static void do_export(BLOB p_blob, String p_file) throws Exception
  {
    // create file output stream
    File l_file = new File(p_file);
    FileOutputStream l_out = new FileOutputStream(l_file);

    // get an input stream from the blob
    InputStream l_in = p_blob.getBinaryStream();

    // get buffer size from blob and use this to create buffer for stream
    int l_size = p_blob.getBufferSize();
    byte[] l_buffer = new byte[l_size];
    int l_length = -1;

    // write the blob data to the output stream
    while ((l_length = l_in.read(l_buffer)) != -1)
    {
      l_out.write(l_buffer, 0, l_length);
      l_out.flush();
    }

    // close the streams
    l_in.close();
    l_out.close();
    }
};
/

-- the requisite plsql wrapper
create or replace procedure exportBLOB (p_blob in blob, p_file in varchar2)
as
language java name 'exportBLOB.do_export(oracle.sql.BLOB,
java.lang.String)';
/

-- a small test of the above
declare
  v_blob blob;
  v_raw  raw(32);
  v_len  number;
begin
  -- create a raw to use in test
  v_raw := utl_raw.cast_to_raw('Oracle!');
  v_len := utl_raw.length(v_raw);

  -- create a temporary lob to test
  dbms_lob.createtemporary(v_blob, true);
  dbms_lob.write(v_blob, v_len, 1, v_raw);

  -- export it
  exportBLOB (v_blob, 'c:\temp\blob.txt');
end;
/


----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to:  oracle-l-request@xxxxxxxxxxxxx
put 'unsubscribe' in the subject line.
--
Archives are at //www.freelists.org/archives/oracle-l/
FAQ is at //www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------

Other related posts: