Foro sobre Java EE > Abrir archivo sin previo guardado
Así sin mayores detalles (¿es aplicación web o swing?) puedes leer el blob como byte[] y seguidamente pasarlo a ByteArrayInputStream, y de allí a lo que lo quieras convertir. Si es una aplicación web, el procedimiento es bien sencillo, estimado sincalzoncillo. Solamente necesitas conocer el "mime-type" (¿cómo se traduce?) del archivo.
Buenas,
es aplicación swing y lo que hago básicamente es crear un InputStream con el Blob y leerlo en un byte[]. Pero una vez que lo tengo ahí metido no se como abrirlo y mostrar el archivo. La única manera que conozco es guardando el byte[] en un FileOutputStream (almacenandolo en disco) y luego ejecutarlo con un exec del Runtime.
Hay algo que se me escapa y no se que es, nunca he tenido la necesidad de abrir un fichero de una BBDD, siempre del disco duro.
Adjunto código por si sirve de algo:
fos = new FileOutputStream(fichero);
InputStream inStream = BLOB.getBinaryStream();
byte[] buffer = new byte[BLOBSIZE];
int length = -1;
while ((length = inStream.read(buffer)) != -1)//lo meto en el array
{
fos.write(buffer, 0, length);//Lo almaceno en disco
}
//Ya aki ejecuto el Runtime
Saludos y gracias por la ayuda.
Podrias usar este proyecto de javazone :
Archivos Temporales
Java nos provee de algunos métodos para usar archivos temporales, y así de esta manera guardar datos que podremos necesitar solo cuando el programa esta corriendo y que se eliminaran luego de finalizar el programa. Estos métodos son File.createTempFile("JavaZonetemporal",null); de la clase File y el método tempFile.deleteOnExit(); también de la clase File, que nos permiten crear el archivo en la ruta de archivos temporales del sistema y eliminarlo después de la ejecución.
LINK: http://java-elrincondetucasa.blogspot.com/2012/04/archivos-temporales.html
Es justo lo que buscaba. Un archivo temporal y un borrado automático cuando se cierre la app.
gracias crack!!!
Buenas a todos,
Tengo una aplicacion que te almacena en campos BLOB de Mysql diferentes tipos de archivos (doc,excell,pdf,jpg, ...). La apliación además de almacenar, debe permitir abrir los documentos guardados.
Lo he conseguido leyendo el Blob y volcandolo en un nuevo File. Éste lo guardo en una ruta cualquiera(supongamos la carpeta temp del windows) y lo abro con la clase Runtime. Claro, todo esto es oculto para el usuario y va muy bien, pero me crea un problema y es que cada vez que se abre un archivo se debe guardar previamente en el disco duro y con el tiempo temo que me cree demasiada "basura" en la carpeta temp.
¿Hay alguna manera de abrir un BLOB sin almacenarlo previamente en el disco?
Saludos y gracias de antemano.