📅  最后修改于: 2023-12-03 15:09:31.517000             🧑  作者: Mango
在 Java 中,我们经常需要从一些输入源中读取数据并将其转换成字符串格式。其中,InputStream
是一种用于读取字节数据的抽象流,而 String
则是 Java 中常用的字符串类型。本文将介绍如何将 InputStream
转换为 String
。
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
并返回即可。
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 会读取输入流的全部内容并作为一个字符串返回。
如果项目中使用了 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
的三种方法。需要注意的是,上述代码中的字符集并不是一定适用的,具体使用时需要根据实际情况进行指定。另外,在读取完输入流后,需要及时关闭输入流以释放资源。