Converti un InputStream in una stringa in Java

Rupam Yadav 12 ottobre 2023
  1. Utilizza l’API Stream per convertire un InputStream in una stringa
  2. Usa ByteArrayOutputStream per leggere o convertire un InputStream in una stringa
  3. Usa IOUtils.toString di Apache Commons per leggere o convertire un InputStream in una stringa
Converti un InputStream in una stringa in Java

In questo tutorial, parleremo di come convertire un InputStream in una stringa in Java. Un InputStream è un flusso di byte che può essere ulteriormente utilizzato per eseguire diverse attività come la lettura. In generale, è una classe che contiene tutto in byte. Se vogliamo convertire questo flusso di byte in qualsiasi altro tipo di dati, potremmo dover utilizzare metodi specifici.

Qui esamineremo i diversi modi in cui possiamo leggere o convertire un InputStream in una stringa in Java

Utilizza l’API Stream per convertire un InputStream in una stringa

Possiamo convertire un InputStream in una stringa usando l’API Stream che fa parte di Java 8. InputStreamReader legge inputStream e BufferedReader().lines() ci aiuta a convertire questo InputStream in un flusso di String. Come possiamo vedere, Collectors.joining() viene utilizzato per unire tutte le stringhe nel flusso e quindi restituire una singola stringa.

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

Produzione:

This is a sample text file

Usa ByteArrayOutputStream per leggere o convertire un InputStream in una stringa

Sappiamo che un InputStream è composto da byte, e quindi possiamo la classe ByteArrayOutputStream che converte readInputStream in un array di byte. Dopodiché, possiamo convertire questo array di byte in una stringa usando 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();
    }
  }
}

Produzione:

This is a sample text file

Usa IOUtils.toString di Apache Commons per leggere o convertire un InputStream in una stringa

Per semplificare il nostro compito, possiamo usare la funzione IOUtils.toString inclusa nella libreria Apache Commons. Per utilizzare la libreria Apache Commons, possiamo includere questa dipendenza nel nostro progetto.

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

Nell’esempio seguente, prima creiamo un InputStream che è un file di testo, quindi chiamiamo il metodo IOUtils.toString() che accetta un InputStream e la codifica da usare per convertire il flusso. Stiamo usando la codifica UTF-8, che è universalmente utilizzata.

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

Produzione:

This is a sample text file
Autore: 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

Articolo correlato - Java String

Articolo correlato - Java IO