HOWTO · Java
Konvertieren eines InputStreams in eine Zeichenkette in Java
Dieser Artikel erklärt anhand von Beispielen, wie man einen InputStream in Java in einen String konvertiert
Auf dieser Seite
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