📅  最后修改于: 2023-12-03 15:16:37.721000             🧑  作者: Mango
在Java编程中,我们经常需要将InputStream类型的数据转换为字符串来进行处理。这篇文章将介绍几种用Java编写的将InputStream转换为字符串的方法。
这种方法会使用Java中的BufferedReader类和InputStreamReader类,让读取InputStream更方便和高效。
public static String inputStreamToString(InputStream inputStream) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append('\n');
}
bufferedReader.close();
return stringBuilder.toString();
}
上述代码段中,我们首先创建一个BufferedReader对象,并使用InputStreamReader来读取输入流。然后我们循环,使用readLine()函数从BufferedReader中读取行,每次读取都会将line添加到stringBuilder对象中,并加入换行符。最后关闭BufferedReader并返回stringBuilder对象的字符串表示形式。
这种方法会使用Java中的ByteArrayOutputStream类和InputStream类,使用ByteArrayOutputStream将InputStream的内容读取到内存中,再根据特定编码生成字符串。
public static String inputStreamToString(InputStream inputStream, Charset charset) throws IOException {
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
result.write(buffer, 0, length);
}
return result.toString(charset.name());
}
上述代码段中,我们首先创建一个ByteArrayOutputStream对象,并从输入流中读取buffer的字节数,使用ByteArrayOutputStream的write()函数将buffer中的字节写入ByteArrayOutputStream。最后返回ByteArrayOutputStream通过一个特定字符串编码所生成的字符串。
这种方法会利用Java中的Scanner类从InputStream中逐一读取字符串,并根据特定分隔符将其合并为一个字符串。
public static String inputStreamToString(InputStream inputStream, Charset charset) {
Scanner s = new Scanner(inputStream, charset.name()).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
上述代码段中,我们首先创建一个Scanner对象,并使用特定字符串编码和特定分隔符读取输入流。最后逐一处理Scanner中的数据并合并为一个字符串。
这篇文章中我们介绍了三种将InputStream转换为字符串的方法。推荐使用第一种方法,因为它可以更方便和高效的转换InputStream。不过,使用其他两种方法也可以方便地实现该功能。