Konvertieren eines InputStreams in eine Zeichenkette in Java

Rupam Yadav 12 Oktober 2023
  1. Konvertieren eines InputStream in eine Zeichenkette mithilfe der Stream-API
  2. Verwenden von ByteArrayOutputStream zum Lesen oder Konvertieren eines InputStreams in eine Zeichenkette
  3. Verwendung von IOUtils.toString von Apache Commons zum Lesen oder Konvertieren eines InputStreams in einen String
Konvertieren eines InputStreams in eine Zeichenkette in Java

In diesem Tutorial werden wir darüber sprechen, wie man einen InputStream in Java in einen String konvertieren kann. Ein InputStream ist ein Strom von Bytes, der weiter verwendet werden kann, um verschiedene Aufgaben wie das Lesen durchzuführen. Im Allgemeinen ist es eine Klasse, die alles in Bytes enthält. Wenn wir diesen Strom von Bytes in einen anderen Datentyp umwandeln wollen, müssen wir möglicherweise spezielle Methoden verwenden.

Hier werden wir die verschiedenen Möglichkeiten durchgehen, mit denen wir einen InputStream in Java lesen oder in einen String konvertieren können

Konvertieren eines InputStream in eine Zeichenkette mithilfe der Stream-API

Wir können einen InputStream in einen String konvertieren, indem wir die Stream-API verwenden, die Teil von Java 8 ist. Der InputStreamReader liest den InputStream und BufferedReader().lines() hilft uns, diesen InputStream in einen String-Stream zu konvertieren. Wie wir sehen können, wird Collectors.joining() verwendet, um alle Strings im Stream zu verbinden und dann einen einzelnen String zurückzugeben.

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

Ausgabe:

This is a sample text file

Verwenden von ByteArrayOutputStream zum Lesen oder Konvertieren eines InputStreams in eine Zeichenkette

Wir wissen, dass ein InputStream aus Bytes besteht, und daher können wir die Klasse ByteArrayOutputStream verwenden, die den readInputStream in ein Array von Bytes konvertiert. Danach können wir dieses Array von Bytes mit toString() in einen String konvertieren.

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

Ausgabe:

This is a sample text file

Verwendung von IOUtils.toString von Apache Commons zum Lesen oder Konvertieren eines InputStreams in einen String

Um unsere Aufgabe zu vereinfachen, können wir die Funktion IOUtils.toString aus der Apache-Commons-Bibliothek verwenden. Um die Apache-Commons-Bibliothek zu verwenden, können wir diese Abhängigkeit in unser Projekt einbinden.

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

Im folgenden Beispiel erstellen wir zunächst einen InputStream, der eine Textdatei ist, und rufen dann die Methode IOUtils.toString() auf, die einen InputStream und die zu verwendende Kodierung für die Konvertierung des Streams entgegennimmt. Wir verwenden die UTF-8-Kodierung, die universell verwendet wird.

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

Ausgabe:

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

Verwandter Artikel - Java String

Verwandter Artikel - Java IO