📜  将 InputStream 转换为 String 的Java程序(1)

📅  最后修改于: 2023-12-03 15:09:31.517000             🧑  作者: Mango

将 InputStream 转换为 String 的 Java 程序

在 Java 中,我们经常需要从一些输入源中读取数据并将其转换成字符串格式。其中,InputStream 是一种用于读取字节数据的抽象流,而 String 则是 Java 中常用的字符串类型。本文将介绍如何将 InputStream 转换为 String

1. 使用 BufferedReader 和 StringBuilder
public static String inputStreamToString(InputStream inputStream) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    StringBuilder stringBuilder = new StringBuilder();
    String line;
    try {
        while ((line = reader.readLine()) != null) {
            stringBuilder.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return stringBuilder.toString();
}

上述代码创建了一个 BufferedReader 对象,用于逐行读取输入流中的数据,并将每行数据追加到一个 StringBuilder 对象中。最后,将 StringBuilder 对象转换成 String 并返回即可。

2. 使用 Scanner 和 StringBuilder
public static String inputStreamToString(InputStream inputStream) {
    Scanner scanner = new Scanner(inputStream).useDelimiter("\\A");
    StringBuilder stringBuilder = new StringBuilder();
    if (scanner.hasNext()) {
        stringBuilder.append(scanner.next());
    }
    return stringBuilder.toString();
}

上述代码创建了一个 Scanner 对象,用于将输入流读入一个 String 对象中。其中,useDelimiter("\\A") 表示使用正则表达式 \A 作为输入流的分隔符,意味着 Scanner 会读取输入流的全部内容并作为一个字符串返回。

3. 使用 Apache Commons IO

如果项目中使用了 Apache Commons IO 这个第三方库,可以使用该库提供的 IOUtils.toString() 方法快速将输入流转换为字符串,如下所示:

public static String inputStreamToString(InputStream inputStream) throws IOException {
    return IOUtils.toString(inputStream, StandardCharsets.UTF_8);
}

上述代码使用 IOUtils 类的 toString() 方法将输入流转换为字符串,并指定了字符集为 UTF-8。

以上就是将 InputStream 转换为 String 的三种方法。需要注意的是,上述代码中的字符集并不是一定适用的,具体使用时需要根据实际情况进行指定。另外,在读取完输入流后,需要及时关闭输入流以释放资源。