Java如何将InputStream转换为String?

本示例将向您展示如何将转换InputStream为String。在下面的代码片段中,我们读取了一个data.txt文件,该文件可以来自公共目录,也可以来自jar文件。

package org.nhooo.example.io;

import java.io.*;
import java.nio.charset.StandardCharsets;

public class StreamToString {

    public static void main(String[] args) throws Exception {
        StreamToString demo = new StreamToString();

        //获取我们的数据文件的输入流。该文件可以在
        // 应用程序文件夹的根目录或jar文件中的根目录
        // 如果程序打包为jar。
        InputStream is = demo.getClass().getResourceAsStream("/data.txt");

        // 调用方法将流转换为字符串
        System.out.println(demo.convertStreamToString(is));
    }

    private String convertStreamToString(InputStream stream) throws IOException {
        // 要将InputStream转换为String,我们使用
        //Reader.read(char [] buffer)方法。我们迭代直到
        // 读者返回-1,这意味着没有更多数据可发送
        //读。我们使用StringWriter类生成字符串。
        if (stream != null) {
            Writer writer = new StringWriter();

            char[] buffer = new char[1024];
            try {
                Reader reader = new BufferedReader(new InputStreamReader(stream, 
                    StandardCharsets.UTF_8));
                int n;
                while ((n = reader.read(buffer)) != -1) {
                    writer.write(buffer, 0, n);
                }
            } finally {
                stream.close();
            }
            return writer.toString();
        }
        return "";
    }
}