小编典典

将InputStream转换为字符串的方法:

使用IOUtils.toString(Apache Utils)

String result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);

使用CharStreams(Guava)

String result = CharStreams.toString(new InputStreamReader(

inputStream, Charsets.UTF_8));

使用Scanner(JDK)

Scanner s = new Scanner(inputStream).useDelimiter("\\A");

String result = s.hasNext() ? s.next() : "";

使用Stream API(Java 8)。警告:此解决方案会将不同的换行符(如\r\n)转换为\n。

String result = new BufferedReader(new InputStreamReader(inputStream))

.lines().collect(Collectors.joining("\n"));

使用并行流API(Java 8)。警告:此解决方案会将不同的换行符(如\r\n)转换为\n。

String result = new BufferedReader(new InputStreamReader(inputStream)).lines()

.parallel().collect(Collectors.joining("\n"));

使用InputStreamReader和StringBuilder(JDK)

final int bufferSize = 1024;

final char[] buffer = new char[bufferSize];

final StringBuilder out = new StringBuilder();

Reader in = new InputStreamReader(stream, StandardCharsets.UTF_8);

int charsRead;

while((charsRead = in.read(buffer, 0, buffer.length)) > 0) {

out.append(buffer, 0, charsRead);

}

return out.toString();

使用StringWriter和IOUtils.copy(Apache Commons)

StringWriter writer = new StringWriter();

IOUtils.copy(inputStream, writer, "UTF-8");

return writer.toString();

使用ByteArrayOutputStream和inputStream.read(JDK)

ByteArrayOutputStream result = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int length;

while ((length = inputStream.read(buffer)) != -1) {

result.write(buffer, 0, length);

}

// StandardCharsets.UTF_8.name() > JDK 7

return result.toString("UTF-8");

使用BufferedReader(JDK)。警告:此解决方案将不同的换行符(如\n\r)转换为line.separator系统属性(例如,在Windows中转换为“ \ r \ n”)。

String newLine = System.getProperty("line.separator");

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

StringBuilder result = new StringBuilder();

boolean flag = false;

for (String line; (line = reader.readLine()) != null; ) {

result.append(flag? newLine: "").append(line);

flag = true;

}

return result.toString();

使用BufferedInputStream和ByteArrayOutputStream(JDK)

BufferedInputStream bis = new BufferedInputStream(inputStream);

ByteArrayOutputStream buf = new ByteArrayOutputStream();

int result = bis.read();

while(result != -1) {

buf.write((byte) result);

result = bis.read();

}

// StandardCharsets.UTF_8.name() > JDK 7

return buf.toString("UTF-8");

使用inputStream.read()和StringBuilder(JDK)。警告:此解决方案存在Unicode问题,例如俄语文本(仅适用于非Unicode文本)

int ch;

StringBuilder sb = new StringBuilder();

while((ch = inputStream.read()) != -1)

sb.append((char)ch);

reset();

return sb.toString();

2020-01-10

java如何输入字符串_在java中如何将一个输入了 InputStream转为一个字符串String?...相关推荐

  1. java.lang.IllegalArgumentException: 字符[_]在域名中永远无效。 at

    [http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将 ...

  2. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  3. 写一函数,将一个字符串中的元音字母复制到另一个字符串,然后输出

    题目描述 写一函数,将一个字符串中的元音字母复制到另一个字符串,然后输出. 输入 一行字符串 输出 顺序输出其中的元音字母(aeiuo) 样例输入 abcde 样例输出 ae #include< ...

  4. C语言 | 将字符串中的元音字母复制到另一个字符串中

    例70:C语言写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出. 解析:if语句判断一下每一个字母是否符合元音字母,读者看着道题的时候,需要注意一点的是如果用scanf函数是否可以,思考 ...

  5. c语言如何用fscanf将字符串读取,在c语言中如何将文本内容 赋给一个 字符串

    在c语言中如何将文本内容 赋给一个 字符串 来源:互联网  宽屏版  评论 2009-08-13 04:59:12 分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题 ...

  6. 写一函数,将两个字符串中的元音字母复制到另一个字符串,然后输出。

    写一函数,将两个字符串中的元音字母复制到另一个字符串,然后输出. #include<stdio.h> #include<string.h> char f(char a[],ch ...

  7. 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出

    写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出 思路:所谓复制到另一个字符串中,就是使a,b数组中元素一一对应,因为字符串结束的标志是\0,所以最后要赋值\0. #include&l ...

  8. java输入一个字符串_在java中如何用键盘输入一个数,字符,字符串

    一,利用 Scanner 实现从键盘读入integer或float 型数据 1 import java.util.*;2 public classtest {3 public static voidm ...

  9. java输入数字_在java中,如何从键盘中输入数字,字符,字符串

    java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象. 常用的类有BufferedReader,Scanner. 实例程序: 一,利用 Scanner 实现从键盘读入inte ...

  10. java中无法解析字符串_关于java:从输入中解析字符串作为参数问题

    我想给我在UNIX中编写的Java程序增加更多的命令,但是有问题传递参数.我刚刚在Unix中输入了之前的命令,并将文本文件作为一个程序参数,这个参数工作得很好,但是我想请求输入.试图解决它自己,但有点 ...

最新文章

  1. BZOJ 2197 [Usaco2011 Mar]Tree Decoration
  2. 机器学习笔记:VAE
  3. 网游服务端php5.1时间戳格式化,php格式化时间戳显示友好时间的简单示例
  4. 重庆理工大学两江校区计算机学院,重庆理工大学两江校区国际项目9月开学
  5. 远程办公也可以很高效
  6. socket api中send()和recv()函数工作原理与要点
  7. MATLAB的GUI设置为不能点击状态(将按钮变为灰色)
  8. python卸载干净_Python卸载不干净?Mac完全卸载python方法
  9. EasyRecovery如何恢复虚拟建模软件的数据文件
  10. [2005.04.28 13:36:04] 孤岛热浪的联想
  11. python while快速写法_从零开始学Python,带你手把手实战之一
  12. Microsoft Office Excel 不能访问文件 的解决办法
  13. 模糊评价模型-以2018美赛为例
  14. 因子分析法基于matlab,因子分析matlab
  15. 深度学习怎么入门?零基础快速入门深度学习
  16. java大文件下载失败_java文件下载超过4G文件错误
  17. Nginx报错:nginx: [error] invalid PID number in /run/nginx.pid的解决方案
  18. 修改Cisco交换机ntp服务器,Cisco交换机NTP的配置
  19. 用计算机怎么打出箭头,怎么打出箭头
  20. 查询当前日期是一年中的第多少周

热门文章

  1. ElementUI:el-container实现高度占满
  2. C++_二维数组的动态申请内存3种方法
  3. 图像形态学运算之腐蚀-膨胀篇
  4. 实操教程 | 深度学习pytorch训练代码模板(个人习惯)
  5. ACM ICMR 2021雷达目标检测挑战赛(ROD2021)
  6. CatBoost之算法解析(Kaggle常用模型)
  7. 求数组的子数组之和的最大值III(循环数组)
  8. idea导入本地idea的web项目(服务器用的是tomcat)
  9. Codeforces Manthan, Codefest 18 (rated, Div. 1 + Div. 2) E.Trips
  10. 前端小知识-html5