Convertir Inputstream en Byte Array en Java

Mohammad Irfan 12 octobre 2023
  1. Convertir InputStream en tableau d’octets en utilisant la méthode readAllBytes() en Java
  2. Convertir InputStream en tableau d’octets en utilisant la méthode toByteArray() en Java
  3. Conversion de l’InputStream en tableau d’octets en utilisant la méthode write() en Java
  4. Convertir InputStream en tableau d’octets en utilisant la méthode readAllBytes() en Java
  5. Convertir InputStream en tableau d’octets en utilisant la méthode readFully() en Java
  6. Conversion de l’InputStream en tableau d’octets en utilisant la méthode getBytes() en Java
  7. Conversion de l’InputStream en tableau d’octets en utilisant le code personnalisé en Java
  8. Conversion d’InputStream en tableau d’octets en utilisant la méthode toByteArray() en Java
Convertir Inputstream en Byte Array en Java

Ce tutoriel présente la conversion d’inputstream en tableau d’octets en Java et donne quelques exemples de codes pour comprendre le sujet.

InputStream est une classe abstraite et une superclasse de toutes les classes qui représentent un flux d’entrée d’octets. Java utilise un flux d’entrée pour lire des données à partir de n’importe quelle source comme un fichier, un tableau, etc. Nous verrons ensuite comment convertir ce flux en tableau d’octets en utilisant certaines méthodes intégrées et du code personnalisé en Java.

Dans cet article, nous utiliserons plusieurs méthodes intégrées telles que toByteArray(), readAllBytes(), readFully(), getBytes(), write(), etc et un fichier texte abc.txt est utilisé pour lire les données. Ce fichier texte contient une seule phrase, Welcome to Delfstack, qui sera lue et convertie en un tableau d’octets, qui peut ensuite être converti en une chaîne de caractères pour vérifier le résultat souhaité.

Convertir InputStream en tableau d’octets en utilisant la méthode readAllBytes() en Java

Nous pouvons utiliser la méthode readAllBytes() pour obtenir toutes les données dans un tableau d’octets. Cette méthode renvoie un tableau d’octets qui peut être passé plus loin dans le constructeur de String pour imprimer des données textuelles.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      byte[] byteArray = ins.readAllBytes();
      System.out.println(new String(byteArray));
      ins.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

Welcome to Delfstack

Convertir InputStream en tableau d’octets en utilisant la méthode toByteArray() en Java

Si vous travaillez avec la bibliothèque Apache, vous pouvez utiliser la méthode toByteArray() de la classe IOUtils pour obtenir toutes les données dans le tableau d’octets. Cette méthode retourne un tableau d’octets qui peut être passé plus loin dans le constructeur de String pour imprimer les données textuelles.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      byte[] bytes = IOUtils.toByteArray(ins);
      System.out.println(new String(bytes));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

Welcome to Delftstack

Conversion de l’InputStream en tableau d’octets en utilisant la méthode write() en Java

Nous pouvons utiliser la méthode write() de la classe ByteArrayOutputStream pour obtenir toutes les données dans un tableau d’octets. Cette méthode retourne un tableau d’octets qui peut être passé au constructeur de String pour imprimer des données textuelles.

package myjavaproject;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      ByteArrayOutputStream buffer = new ByteArrayOutputStream();
      int read;
      byte[] data = new byte[16384];
      while ((read = ins.read(data, 0, data.length)) != -1) {
        buffer.write(data, 0, read);
      }
      System.out.println(new String(data));
      ins.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

Welcome to Delfstack

Convertir InputStream en tableau d’octets en utilisant la méthode readAllBytes() en Java

Nous pouvons utiliser la méthode readAllBytes() de la classe DataInputStream pour convertir toutes les données en un tableau d’octets. Cette méthode renvoie un tableau d’octets qui peut être passé plus loin dans le constructeur de la String pour imprimer des données textuelles.

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      DataInputStream dis = new DataInputStream(new FileInputStream(file));
      byte[] bytes = dis.readAllBytes();
      System.out.println(new String(bytes));
      dis.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

Welcome to Delftstack

Convertir InputStream en tableau d’octets en utilisant la méthode readFully() en Java

Nous pouvons utiliser la méthode readFully() de la classe RandomAccessFile pour convertir toutes les données en un tableau d’octets. Cette méthode retourne un tableau d’octets, qui peut être passé au constructeur de la String pour imprimer des données textuelles.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      InputStream is = new FileInputStream(file);
      RandomAccessFile raf = new RandomAccessFile(file, "r");
      byte[] bytesData = new byte[(int) raf.length()];
      raf.readFully(bytesData);
      System.out.println(new String(bytesData));
      is.close();
      raf.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

Welcome to Delfstack

Conversion de l’InputStream en tableau d’octets en utilisant la méthode getBytes() en Java

Nous pouvons utiliser la méthode getBytes() de la classe String pour convertir toutes les données en un tableau d’octets. Cette méthode retourne un tableau d’octets qui peut être passé plus loin dans le constructeur de la String pour imprimer des données textuelles.

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.stream.Collectors;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      byte[] bytesData = {};
      InputStream is = new FileInputStream(file);
      try (BufferedReader buffer = new BufferedReader(new InputStreamReader(is))) {
        bytesData = buffer.lines().collect(Collectors.joining("\n")).getBytes();
      }
      System.out.println(new String(bytesData));
      is.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

Welcome to Delftstack

Conversion de l’InputStream en tableau d’octets en utilisant le code personnalisé en Java

Si vous ne souhaitez pas utiliser de méthode intégrée, utilisez ce code personnalisé pour convertir inputstream en un tableau d’octets. Ce code renvoie un tableau d’octets qui peut être passé plus loin dans le constructeur String pour imprimer des données textuelles.

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      byte[] bytesData = {};
      bytesData = getBytesFromFile(new File(file));
      System.out.println(new String(bytesData));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public static byte[] getBytesFromFile(File file) throws IOException {
    InputStream is = new FileInputStream(file);
    long length = file.length();
    byte[] bytes = new byte[(int) length];
    int offset = 0;
    int numRead = 0;
    while (
        offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
      offset += numRead;
    }
    if (offset < bytes.length) {
      throw new IOException("Could not read file " + file.getName());
    }
    return bytes;
  }
}

Production :

Welcome to Delfstack

Conversion d’InputStream en tableau d’octets en utilisant la méthode toByteArray() en Java

Nous pouvons utiliser la méthode toByteArray() de la classe ByteArrayOutputStream pour convertir toutes les données en un tableau d’octets. Cette méthode renvoie un tableau d’octets qui peut être passé plus loin dans le constructeur de la String pour imprimer des données textuelles.

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      InputStream is = new FileInputStream(file);
      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      is.transferTo(byteArrayOutputStream);
      byte[] bytesData = byteArrayOutputStream.toByteArray();
      System.out.println(new String(bytesData));
      is.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

Welcome to Delfstack

Article connexe - Java IO