2012-03-07 7 views

Respuesta

13

utilizar una matriz de bytes (byte []) o InputStream (por ejemplo ByteArrayInputStream). Las cadenas de Java no son un buen contenedor para datos binarios genéricos.

La biblioteca Apache commons-io tiene algunas buenas clases de utilidad para tratar con bytes y flujos.

p. Ej. IOUtils.toByteArray(InputStream)


ByteBuffer se introdujo como parte de Java NIO, disponible en Java 4 (1,4) y más tarde. En escenarios especializados, puede tener beneficios de rendimiento sobre el uso de un byte []. También tiene algunos métodos útiles de conveniencia. Todavía utilizo byte [], sin embargo, dado que es más conocido, más común en las API y casi siempre funciona bastante bien.

4

Una serie de byte s

byte[] 

por eso que no ves que está siendo utilizado en FileInputStream

2

Utilice byte[] o ByteBuffer si necesita una manipulación simplificada del nivel de bytes.

Estrictamente hablando, podría utilizar una cadena, pero hay muchas trampas relacionadas con la codificación de caracteres, por lo que no debe usar cadenas sin una buena razón para hacerlo.

3

Para pequeña cantidad de datos utilizan un byte[] pero para archivos binarios (que se almacena en bases de datos BLOB) se debe utilizar un archivo temporal como InputStream. JavaEE también hace esto para los archivos cargados. No es bueno que el rendimiento del servidor desperdicie memoria para byte []. Imagine una aplicación web que entrega diez archivos PDF, cada uno de aproximadamente 200 MB. El servidor necesitará más de 2 GB de RAM solo para la aplicación web.

Además, el uso de InputStream permite a JDBC transmitir los datos a la base de datos (para la mayoría de los controladores JDBC, no para MySql, que almacenará los datos en la memoria dos veces más para el cliente y el servidor).

Puede echar un vistazo en Apache Commons FileUpload y setBlob() de PreparedStratement.

0

No guarde los archivos directamente en una base de datos. Guárdelos en un sistema de archivos y guarde la ruta al archivo en la base de datos. Para eso están los sistemas de archivos. Obtendrá problemas de rendimiento si almacena archivos binarios en su base de datos.

Cuestiones relacionadas