返回顶部

收藏

java读取InputStream文本内容的几种方式

更多

第一种方式:只使用java的标准库,使用java.util.Scanner

public static String convertStreamToString(java.io.InputStream is) {
    java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
    return s.hasNext() ? s.next() : "";
}

第二种方式:使用java.io.Reader和StringBuilder

public static String slurp(final InputStream is, final int bufferSize)
{
  final char[] buffer = new char[bufferSize];
  final StringBuilder out = new StringBuilder();
  try {
    final Reader in = new InputStreamReader(is, "UTF-8");
    try {
      for (;;) {
        int rsz = in.read(buffer, 0, buffer.length);
        if (rsz < 0)
          break;
        out.append(buffer, 0, rsz);
      }
    }
    finally {
      in.close();
    }
  }
  catch (UnsupportedEncodingException ex) {
    /* ... */
  }
  catch (IOException ex) {
      /* ... */
  }
  return out.toString();
}

第三种方式: 借助于apache commons的IOUtils类将InputStream复制到StingReader中:

StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, encoding);
String theString = writer.toString();

标签:java,IO,字符串

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. Harries 发表 2018-03-04 14:02:39 小马哥 《Java 微服务实践 – Spring Cloud 系列》强烈推荐
  2. 博主 发表 2015-05-31 07:50:47 字符串数组排序算法总结及算法实现(Java)
  3. zhuangli 发表 2018-04-14 14:10:18 为什么在Go语言中要少用interface{}
  4. 尖兵 发表 2018-04-27 14:27:25 Lock锁子类了解一下
  5. zhuangli 发表 2018-06-02 14:57:31 通过 jstack 与 jmap 分析一次线上故障
  6. xiaoli.he 发表 2018-06-11 16:04:32 React项目实践系列二
  7. zhuangli 发表 2018-07-04 14:07:19 Java内存管理简介
  8. xiaoli.he 发表 2018-08-08 10:28:11 走进科学之揭开神秘的 “零拷贝”
  9. yanxinchi 发表 2018-08-21 11:07:53 Java基础 — 异常
  10. 刘莉莉 发表 2018-08-23 10:57:11 来,了解一下Java内存模型(JMM)
  11. 小丁 发表 2018-08-26 09:53:18 LBYL与EAFP漫谈
  12. 博主 发表 2016-09-09 00:00:00 Java IO 概念理清

发表评论