Convertir un DataHandler en un Array de Bytes y viceversa

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.

Esta entrada ha sido publicada en Informática, Java y etiquetada como , , , . Guarda el enlace permanente.

10 respuestas a Convertir un DataHandler en un Array de Bytes y viceversa

  1. romano dijo:

    Esto me sirvio de mucho…

    Gracias

  2. davioth dijo:

    De Nada romano mi intención siempre ha sido compartir lo poco que aprenda.

    Y Gracias por el comentario.

  3. David dijo:

    Muchas gracias, me has evitado tiempo de busqueda.
    Un saludo.

  4. Perikles dijo:

    Pues a mi también me sirvio, muchas gracias!!!

  5. Juan Luis dijo:

    Excelente lo necesitaba, gracias…

  6. Lucas dijo:

    Muchas gracias por compartir.
    Saludos

  7. Jorge dijo:

    Muchas gracias por el código, corto y eficaz!

  8. Jorge dijo:

    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;
    }
    }

  9. jorge dijo:

    Buenas;
    Una información muy buena.
    Me acabas de salvar.
    Sigue así

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *