Hola,
por varias razones he tenido que enfrentarme a la tarea de convertir un DataHandler en un Array de Byte y viceversa. Por eso comparto lo que he hecho yo para hacer esto. Por cierto, todo esto en Java.
Para hacer estas conversiones he utilizado los métodos propios de DataHandler para su conversión en un InputStream o en un OutPutStream y finalmente utilizando librerías propias de Apache Commons en este caso la librería IOUtils , que posee distintos métodos para la manipulación de Streams.
De DataHandler a Byte[]
[sourcecode language=’java’]
import org.apache.commons.io.IOUtils;
DataHandler dataHandler = new DataHandler();
InputStream dataHandler = archivo.getInputStream();
byte[] arrayByte = IOUtils.toByteArray(dataHandler);
[/sourcecode]
De Byte[] a DataHandler
[sourcecode language=’java’]
import org.apache.commons.io.IOUtils;
byte[] arrayByte = new Byte[] ();
DataSource dataSource = new ByteArrayDataSource(arrayByte, tipoMIMEDelArray);
DataHandler dataHandler = new DataHandler(dataSource);
[/sourcecode]
Espero que esto le pueda servir a alguien.
Esto me sirvio de mucho…
Gracias
De Nada romano mi intención siempre ha sido compartir lo poco que aprenda.
Y Gracias por el comentario.
Muchas gracias, me has evitado tiempo de busqueda.
Un saludo.
Pues a mi también me sirvio, muchas gracias!!!
Excelente lo necesitaba, gracias…
Muchas gracias por compartir.
Saludos
Muchas gracias por el código, corto y eficaz!
Por cierto para pasar de Byte[] a DataHandler yo utilizo este código!
Saludos 😉
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class ByteArrayDataSource implements javax.activation.DataSource {
private byte[] bytes;
public void setBytes(byte[] bytes) {
this.bytes = bytes;
}
public byte[] getBytes() {
return bytes;
}
private String contentType;
public void setContentType(String contentType) {
this.contentType = contentType;
}
public String getContentType() {
return contentType;
}
public InputStream getInputStream() {
return new ByteArrayInputStream(bytes);
}
public OutputStream getOutputStream() throws IOException {
final ByteArrayDataSource bads = this;
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
// devuelve un outputstream igual que los bytes de mi array
// cuando este está cerrado.
FilterOutputStream a = new FilterOutputStream(baos);
baos.close();
bads.setBytes(baos.toByteArray());
return a;
}
public String getName() {
// TODO Auto-generated method stub
return null;
}
}
Buenas;
Una información muy buena.
Me acabas de salvar.
Sigue así
Me sirvio