天天看點

Java InputStream轉換為String

Today we will learn how to convert InputStream to String in Java. While working on files, sometimes we have to read files and then convert InputStream data to String for further processing.

今天,我們将學習如何在Java中将InputStream轉換為String。 在處理檔案時,有時我們必須讀取檔案,然後将InputStream資料轉換為String進行進一步處理。

Java InputStream轉換為String (Java InputStream to String)

We can convert InputStream to String in many ways.

我們可以通過多種方式将InputStream轉換為String。

  1. BufferedReader

    緩沖讀取器

  2. StringWriter

    StringWriter

  3. Scanner

    掃描器

Let’s look into all these classes to convert InputStream object to String.

讓我們研究所有這些類,以将InputStream對象轉換為String。

1. BufferedReader (1. BufferedReader)

Here is a simple program showing java InputStream to String conversion using BufferedReader.

這是一個簡單的程式,顯示了使用BufferedReader的 java InputStream到String的轉換。

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class InputStreamToStringUsingBufferedReader {

	final static String fileName = "/Users/pankaj/Downloads/file.txt";

	public static void main(String[] args) throws IOException {
		long start = System.currentTimeMillis();
		FileInputStream fileInputStream = null;
		BufferedReader bufferedReader = null;
		StringBuilder inputSB = null;
		try {
			fileInputStream = new FileInputStream(fileName);
			bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));
			inputSB = new StringBuilder();
			String line = bufferedReader.readLine();
			while (line != null) {
				inputSB.append(line);
				line = bufferedReader.readLine();
				if (line != null) {
					// add new line character
					inputSB.append("\n");
				}
			}
		} finally {
			bufferedReader.close();
			fileInputStream.close();
		}
		String str = inputSB.toString();
		long end = System.currentTimeMillis();
		System.out.println("InputStream to String using BufferedReader = " + (end - start) + "ms");
	}

}
           

2. StringWriter (2. StringWriter)

We can use StringWriter too for converting InputStream to String. Note that it’s also using

BufferedReader

but writing data to StringWriter and then easily converting to String.

我們也可以使用StringWriter将InputStream轉換為String。 請注意,它也使用

BufferedReader

但将資料寫入StringWriter,然後輕松轉換為String。

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;

public class InputStreamToStringUsingStringWriter {

	final static String fileName = "/Users/pankaj/Downloads/file.txt";

	public static void main(String args[]) throws IOException {
		long start = System.currentTimeMillis();
		FileInputStream fileInputStream = null;
		Reader reader = null;
		Writer writer = new StringWriter();
		char[] buffer = new char[1024];
		try {
			fileInputStream = new FileInputStream(fileName);
			reader = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));
			int n;
			while ((n = reader.read(buffer)) != -1) {
				writer.write(buffer, 0, n);
			}
		} finally {
			reader.close();
			writer.close();
			fileInputStream.close();
		}
		String str = writer.toString();
		long end = System.currentTimeMillis();
		System.out.println("InputStream to String using StringWriter = " + (end - start) + "ms");
	}
}
           

3.掃描器 (3. Scanner)

We can also use Scanner class for reading a file as InputStream and convert to String.

我們還可以使用Scanner類将檔案讀取為InputStream并轉換為String。

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;

public class InputStreamToStringUsingScanner {

	final static String fileName = "/Users/pankaj/Downloads/file.txt";

	public static void main(String[] args) throws IOException {
		long start = System.currentTimeMillis();
		FileInputStream fileInputStream = null;
		Scanner scanner = null;
		try {
			fileInputStream = new FileInputStream(fileName);
			scanner = new Scanner(fileInputStream, "UTF-8");
			String str = scanner.useDelimiter("\\A").next();
		} finally {
			fileInputStream.close();
			scanner.close();
		}
		long end = System.currentTimeMillis();
		System.out.println("InputStream to String using Scanner = "+(end-start)+"ms");
	}

}
           

Java InputStream到字元串測試 (Java InputStream to String Test)

I executed all the above programs on a file of 176 MB. Below is the result of the test run.

我在176 MB的檔案上執行了上述所有程式。 以下是測試運作的結果。

That’s all for converting InputStream to String in Java. If you are looking for the best performance, then you should do some test run with sample data of your choice and then go for the best performing method.

這就是在Java中将InputStream轉換為String的全部。 如果您正在尋找最佳性能,則應使用您選擇的樣本資料進行一些測試,然後再選擇性能最佳的方法。

References:

參考文獻:

  • BufferedReader API Doc

    BufferedReader API文檔

  • StringWriter API Doc

    StringWriter API檔案

  • Java Scanner

    Java掃描器

翻譯自: https://www.journaldev.com/706/java-inputstream-to-string