在 Java 中轉換輸入流為字串
-
使用
Stream
API 將InputStream
轉換為字串 -
使用
ByteArrayOutputStream
讀取或轉換輸入流為字串 -
使用 Apache Commons 的
IOUtils.toString
讀取InputStream
或將其轉換為字串
在本教程中,我們將討論如何在 Java 中把一個 InputStream 轉換為一個字串。一個 InputStream 是一個位元組流,可以進一步用於執行一些任務,如讀取。一般來說,它是一個包含一切位元組的類。如果我們要將這個位元組流轉換為任何其他型別的資料,我們可能必須使用特定的方法。
在這裡,我們將通過以下幾種方法,在 Java 中讀取或將 InputStream
轉換為字串。
使用 Stream
API 將 InputStream
轉換為字串
我們可以使用 Java 8 中的 Stream
API 將 InputStream
轉換為字串。InputStreamReader
讀取輸入流,BufferedReader().lines()
幫助我們將這個 InputStream
轉換為一個 String
的流。我們可以看到,Collectors.join()
被用來連線流中的所有字串,然後返回一個單一的字串。
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();
}
}
}
輸出:
This is a sample text file
使用 ByteArrayOutputStream
讀取或轉換輸入流為字串
我們知道,一個 InputStream
是由位元組組成的,因此我們可以 ByteArrayOutputStream
類,將 readInputStream
轉換成一個位元組陣列。之後,我們可以使用 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();
}
}
}
輸出:
This is a sample text file
使用 Apache Commons 的 IOUtils.toString
讀取 InputStream
或將其轉換為字串
為了簡化我們的任務,我們可以使用 Apache Commons 庫中包含的 IOUtils.toString
函式。要使用 Apache Commons 庫,我們可以在專案中加入這個依賴關係。
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
在下面的例子中,首先,我們建立了一個文字檔案 InputStream
,然後呼叫 IOUtils.toString()
方法,該方法需要一個 InputStream
和轉換流的編碼。我們使用的是 UTF-8 編碼,這是普遍使用的編碼。
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();
}
}
}
輸出:
This is a sample text file
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相關文章 - Java String
- 如何在 Java 中以十六進位制字串轉換位元組陣列
- 如何在 Java 中執行字串到字串陣列的轉換
- 如何將 Java 字串轉換為位元組
- 如何從 Java 中的字串中刪除子字串
- 用 Java 生成隨機字串
- Java 中的交換方法