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