Java中将InputStream对象转换为字符串
Java提供了I/O流来读取和写入数据,其中,流表示输入源或输出目标,它可以是文件,I/O设备,其他程序等。
有两种类型的流可用-
InputStream-用于从源读取(顺序)数据。
OutputStream-用于将数据写入目标。
FileInputStream
此类从特定文件(逐字节)读取数据。它通常用于读取带有原始字节(例如图像)的文件的内容。
将InputStream对象转换为String
您可以使用核心Java以多种方式将InputStreamObjectint转换为String。为此,您也可以使用IOUtils,Guava等外部库。以下是在Java中将InputStream对象转换为String的一些方法(不包括外部库)。
使用BufferedReader
BufferedReader类的readLine()方法从当前阅读器的内容读取一行。使用此方法将InputStreamObjectint转换为String。
通过将InputStream对象作为参数来实例化InputStreamReader类。
然后,通过将上面获得的InputStreamReader对象作为参数传递,从而创建BufferedReader。
Example
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class InputStreamToString{ public static void main(String args[]) throws IOException { //创建一个InputStream对象 InputStream inputStream = new FileInputStream("D:/sample.txt"); //创建InputStreamReader对象 InputStreamReader isReader = new InputStreamReader(inputStream); //创建BufferedReader对象 BufferedReader reader = new BufferedReader(isReader); StringBuffer sb = new StringBuffer(); String str; while((str = reader.readLine())!= null){ sb.append(str); } System.out.println(sb.toString()); } }
Output
他们更愿意在舒适的客厅里按照自己的节奏学习新技能。 欢迎来到 https://www.nhooo.com
使用Scanner类
Scanner类的nextLine()方法逐行读取基础inputStream的内容。使用此方法将InputStreamObjectint转换为String。
通过将InputStream对象作为参数传递来实例化Scanner类。
使用nextLine()方法从该扫描器读取每一行,并将其追加到StringBuffer对象。
最后,使用toString()方法将StringBuffer转换为String。
示例
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Scanner; public class InputStreamToString { public static void main(String args[]) throws IOException { //创建InputStream对象 InputStream inputStream = new FileInputStream("D:/sample.txt"); //创建扫描器对象 Scanner sc = new Scanner(inputStream); //从Scanner到StringBuffer逐行读取 StringBuffer sb = new StringBuffer(); while(sc.hasNext()){ sb.append(sc.nextLine()); } System.out.println(sb.toString()); } }
Output
他们更愿意在舒适的客厅里按照自己的节奏学习新技能。 欢迎来到 https://www.nhooo.com
使用InputStreamReader类
InputStreamReader 类的read()方法接受一个字符数组作为参数,并将当前Stream的内容读取到给定的数组。使用此方法将InputStreamObjectint转换为String。
通过将InputStream对象作为参数来实例化InputStreamReader类。
使用InputStreamReader类的read()方法将当前流读取器的内容读取到字符数组。
最后,通过将字符作为参数传递给其构造函数,将字符转换为String。
例子
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class FileInputStreamExample { public static void main(String args[]) throws IOException { //Creating a File object File file = new File("D:/sample.txt"); //Creating an InputStream object InputStream inputStream = new FileInputStream(file); //creating an InputStreamReader object InputStreamReader isReader = new InputStreamReader(inputStream); //Creating a character array char charArray[] = new char[(int) file.length()]; //Reading the contents of the reader isReader.read(charArray); //Converting character array to a String String contents = new String(charArray); System.out.println(contents); } }
输出量
他们更愿意在舒适的客厅里按照自己的节奏学习新技能。 欢迎来到 https://www.nhooo.com