如何在Java中将InputStream转换为String?
假设我有一个包含文本数据的InputStream
,我想将其转换为String
(例如,我可以将流的内容写入日志文件)。
获取InputStream
并将其转换为String
的最简单方法是什么?
public String convertStreamToString(InputStream is) { // ??? }
这是我的版本,
public static String readString(InputStream inputStream) throws IOException { ByteArrayOutputStream into = new ByteArrayOutputStream(); byte[] buf = new byte[4096]; for (int n; 0 < (n = inputStream.read(buf));) { into.write(buf, 0, n); } into.close(); return new String(into.toByteArray(), "UTF-8"); // Or whatever encoding }
如果您想简单可靠地完成它,我建议使用Apache Jakarta Commons IO库IOUtils.toString(java.io.InputStream, java.lang.String)
方法。
String text = new Scanner( inputStream).useDelimiter("\\A").next();
更多在这里
您可以使用BufferedReader
将流读入循环中的StringBuilder
,然后从StringBuilder
获取完整内容:
public String convertStreamToString(InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); }
完全披露 :这是我在KodeJava.org上找到的解决方案。 我在这里发表评论和评论。