Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   Taking the contents of a Blob and writing it to a file (http://www.velocityreviews.com/forums/t147129-taking-the-contents-of-a-blob-and-writing-it-to-a-file.html)

MattC 10-22-2005 03:31 PM

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?


Roedy Green 10-23-2005 10:28 AM

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.

steve 10-24-2005 09:38 PM

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 01:46 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.