Odczytanie lub konwersja `InputStream` na `String` w Javie jest często potrzebna podczas pracy z operacjami wejścia-wyjścia. Możesz to zrobić na kilka sposobów, w zależności od używanej wersji Javy i dostępnych bibliotek. Oto kilka popularnych metod:
Java 8 i nowsze: Użycie `java.util.Scanner`
import java.io.InputStream;
import java.util.Scanner;</p&gp;
<p&gp;public class InputStreamToString {
public static String convertUsingScanner(InputStream inputStream) {
Scanner scanner = new Scanner(inputStream).useDelimiter("\A");
return scanner.hasNext() ? scanner.next() : "";
}
}
Java 8 i nowsze: Użycie `java.nio.charset.StandardCharsets`
import java.io.InputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;</p&gp;
<p&gp;public class InputStreamToString {
public static String convertUsingJava8(InputStream inputStream) throws IOException {
byte[] bytes = inputStream.readAllBytes();
return new String(bytes, StandardCharsets.UTF_8);
}
}
Java 8: Użycie `java.io.BufferedReader`
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;</p&gp;
<p&gp;public class InputStreamToString {
public static String convertUsingBufferedReader(InputStream inputStream) throws IOException {
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("n");
}
br.close();
return sb.toString();
}
}
Apache Commons IO
Jeśli masz do dyspozycji bibliotekę Apache Commons IO, możesz użyć klasy `IOUtils` do skrócenia procesu.
Dodaj zależność do Mavena:
<dependency&gp;
<groupId&gp;commons-io</groupId&gp;
<artifactId&gp;commons-io</artifactId&gp;
<version&gp;2.6</version&gp;
</dependency&gp;
Przykład konwersji:
import java.io.InputStream;
import java.io.IOException;
import org.apache.commons.io.IOUtils;</p&gp;
<p&gp;public class InputStreamToString {
public static String convertUsingApacheCommonsIO(InputStream inputStream) throws IOException {
return IOUtils.toString(inputStream, "UTF-8");
}
}
Metoda, którą wybierzesz, zależy od Twoich potrzeb i wersji Javy. `java.util.Scanner` jest prostym rozwiązaniem, ale nie zawsze jest najlepsze dla bardzo dużych strumieni danych. Użycie `java.nio` (dostępne od Javy 8) jest bardziej efektywne dla dużych danych. `BufferedReader` jest dobrym rozwiązaniem dla starszych wersji Javy. Apache Commons IO oferuje wygodne i krótkie rozwiązanie, ale wymaga dodatkowej zależności.
Komentarz