本文共 4515 字,大约阅读时间需要 15 分钟。
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进行进一步处理。
We can convert InputStream to String in many ways.
我们可以通过多种方式将InputStream转换为String。
Let’s look into all these classes to convert InputStream object to String.
让我们研究所有这些类,以将InputStream对象转换为String。
Here is a simple program showing java InputStream to String conversion using .
这是一个简单的程序,显示了使用 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"); }}
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"); }}
We can also use class for reading a file as InputStream and convert to String.
我们还可以使用类将文件读取为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"); }}
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:
参考文献:
翻译自:
转载地址:http://bmozd.baihongyu.com/