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。
BufferedReader
缓冲读取器
StringWriter
StringWriter
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
还没有评论,来说两句吧...