Java InputStream转换为String
时间:2020-02-23 14:34:29 来源:igfitidea点击:
今天,我们将学习如何在Java中将InputStream转换为String。
在处理文件时,有时我们必须读取文件,然后将InputStream数据转换为String进行进一步处理。
Java InputStream转换为String
我们可以通过多种方式将InputStream转换为String。
- BufferedReader
- StringWriter
- Scanner
让我们研究一下所有这些类,以将InputStream对象转换为String。
1. 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/hyman/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
我们也可以使用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/hyman/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.扫描仪
我们还可以使用Scanner类将文件读取为InputStream并转换为String。
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class InputStreamToStringUsingScanner {
final static String fileName = "/Users/hyman/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");
}
}

