![]() |
Taking the contents of a Blob and writing it to a file
I have a java.sql.Blob object that represents an XML file. I would like
to right the Blob to a file on the file system. Can someone tell me an easy way to do this? |
Re: Taking the contents of a Blob and writing it to a file
On 22 Oct 2005 08:31:12 -0700, "MattC" <matthew.n.connors@lmco.com>
wrote or quoted : >I have a java.sql.Blob object that represents an XML file. I would like >to right the Blob to a file on the file system. Can someone tell me an >easy way to do this? use Blob.getBytes. From there see http://mindprod.com/applets/fileio.html for how you might decode it, and write it as a string, or write it as raw bytes. XML is a character string so it properly belonged in a Clob, not a Blob. -- Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts. |
Re: Taking the contents of a Blob and writing it to a file
On Sun, 23 Oct 2005 18:28:01 +0800, Roedy Green wrote
(in article <04pml1tnncdc2he7mqas9a74hlu1v98h59@4ax.com>): > On 22 Oct 2005 08:31:12 -0700, "MattC" <matthew.n.connors@lmco.com> > wrote or quoted : > >> I have a java.sql.Blob object that represents an XML file. I would like >> to right the Blob to a file on the file system. Can someone tell me an >> easy way to do this? > > use Blob.getBytes. From there see > http://mindprod.com/applets/fileio.html > for how you might decode it, and write it as a string, or write it as > raw bytes. > > XML is a character string so it properly belonged in a Clob, not a > Blob. > > > you have to be a bit careful!!. if it's in a clob and you are on oracle and your NLS language is set incorrectly , your database will translate the content of it's clobs to a different codepage, which might include conversion from single byte to multibyte character sets. sometimes , i might want to have chinese characters on my oracle database, i generally write them to a blob , so that the database does not tanslate and interpret them as single byte, instead of multibyte. that said: this is the code to get a blob , the "photo" is stored in the content field of the database. just modify the "bo" to a file stream public static byte[] getPhoto(long photoId) throws Exception { static final int MAXBUFSIZE = 4096; Section section = null; PreparedStatement st = null; ResultSet rset = null; try { String sql = "Select content from photo_store where deleted=0 and id=?"; st = c.prepareStatement(sql); st.setLong(1, photoId); // Bind the photo id ////Oracle rset = st.executeQuery(); // Execute Query oracle.sql.BLOB blob = null; if (rset.next()) /*this is always true*/ { blob = (oracle.sql.BLOB) rset.getObject(1); } if (blob != null) { BufferedInputStream bis = new BufferedInputStream(blob.getBinaryStream()); ByteArrayOutputStream bo = new ByteArrayOutputStream(); byte[] buf = new byte[MAXBUFSIZE]; int n = 0; while ((n = bis.read(buf, 0, MAXBUFSIZE)) != -1) { bo.write(buf, 0, n); } bo.flush(); bo.close(); bis.close(); buf = null; return bo.toByteArray(); } } catch (Exception ex) { Error_stuff.handleError(ex, -1, -1); // ex.printStackTrace(); } finally { if (st != null) { try { st.close(); } catch (Exception ex1) { Error_stuff.handleError(ex1, -1, -1); } } } return null; } |
| All times are GMT. The time now is 11:16 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.