Convertir un InputStream en une chaîne de caractères en Java

Rupam Yadav 12 octobre 2023
  1. Utiliser l’API Stream pour convertir un InputStream en chaîne de caractères
  2. Utilisez ByteArrayOutputStream pour lire ou convertir un InputStream en chaîne de caractères
  3. Utilisez IOUtils.toString d’Apache Commons pour lire ou convertir un InputStream en une chaîne de caractères
Convertir un InputStream en une chaîne de caractères en Java

Dans ce tutoriel, nous parlerons de la manière de convertir un InputStream en une chaîne de caractères en Java. Un InputStream est un Stream d’octets qui peut être utilisé pour effectuer plusieurs tâches comme la lecture. En général, c’est une classe qui contient tout en octets. Si nous voulons convertir ce Stream d’octets en tout autre type de données, il se peut que nous devions utiliser des méthodes spécifiques.

Ici, nous allons passer en revue les différentes façons dont nous pouvons lire ou convertir un InputStream en une chaîne de caractères en Java

Utiliser l’API Stream pour convertir un InputStream en chaîne de caractères

Nous pouvons convertir un InputStream en une chaîne de caractères en utilisant l’API Stream qui fait partie de Java 8. InputStreamReader lit l’inputStream et BufferedReader().lines() nous aide à convertir cet InputStream en une chaîne de caractères. Comme nous pouvons le voir, Collectors.joining() est utilisé pour joindre toutes les chaînes du Stream et ensuite retourner une seule chaîne.

package com.company;

import java.io.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.io.IOUtils;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream inputStream = new FileInputStream("java/sampleFile.txt");

      InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
      Stream<String> streamOfString = new BufferedReader(inputStreamReader).lines();
      String streamToString = streamOfString.collect(Collectors.joining());

      System.out.println(streamToString);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

This is a sample text file

Utilisez ByteArrayOutputStream pour lire ou convertir un InputStream en chaîne de caractères

Nous savons qu’un InputStream est constitué d’octets, et nous pouvons donc utiliser la classe ByteArrayOutputStream qui convertit le readInputStream en un tableau d’octets. Après cela, nous pouvons convertir ce tableau d’octets en une chaîne de caractères en utilisant toString().

package com.company;

import java.io.*;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream readInputStream = new FileInputStream("java/sampleFile.txt");

      String encoding = "UTF-8";

      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      byte[] byteSize = new byte[1024];

      int length;
      while ((length = readInputStream.read(byteSize)) != -1) {
        byteArrayOutputStream.write(byteSize, 0, length);
      }

      System.out.println(byteArrayOutputStream.toString(encoding));

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production:

This is a sample text file

Utilisez IOUtils.toString d’Apache Commons pour lire ou convertir un InputStream en une chaîne de caractères

Pour nous faciliter la tâche, nous pouvons utiliser la fonction IOUtils.toString incluse dans la bibliothèque Apache Commons. Pour utiliser la bibliothèque Apache Commons, nous pouvons inclure cette dépendance dans notre projet.

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.8.0</version>
</dependency>

Dans l’exemple ci-dessous, nous créons d’abord un InputStream qui est un fichier texte, puis nous appelons la méthode IOUtils.toString() qui prend un InputStream et l’encodage à utiliser pour convertir le Stream. Nous utilisons l’encodage UTF-8, qui est universellement utilisé.

package com.company;

import java.io.*;
import org.apache.commons.io.IOUtils;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream inputStream = new FileInputStream("java/sampleFile.txt");

      String steamToString = IOUtils.toString(inputStream, "UTF-8");
      System.out.println(steamToString);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Production :

This is a sample text file
Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Article connexe - Java String

Article connexe - Java IO