Java中将InputStream对象转换为字符串

Java提供了I / O流来读取和写入数据,其中,流表示输入源或输出目标,它可以是文件,I / O设备,其他程序等。

有两种类型的流可用-

  • InputStream - 用于从源读取(顺序)数据。

  • OutputStream - 用于将数据写入目标。

FileInputStream

此类从特定文件(逐字节)读取数据。它通常用于读取带有原始字节(例如图像)的文件的内容。

将InputStream对象转换为String

您可以使用核心Java以多种方式将InputStream Object int转换为String。为此,您也可以使用IOUtils,Guava等外部库。以下是在Java中将InputStream对象转换为String的一些方法(不包括外部库)。

使用BufferedReader

BufferedReader类的readLine()方法从当前阅读器的内容读取一行。使用此方法将InputStream Object int转换为String。

  • 通过将InputStream对象作为参数来实例化InputStreamReader类。

  • 然后,通过将上面获得的InputStreamReader对象作为参数传递,从而创建BufferedReader。

  • 现在,使用readLine()方法从该读取器读取每一行,并将其追加到StringBuffer对象。

  • 最后使用toString()方法将StringBuffer转换为字符串。

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的内容。 使用此方法将InputStream Object int转换为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的内容读取到给定的数组。使用此方法将InputStream Object int转换为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