代码如下:

package com.xin.stream;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner; import org.apache.commons.io.IOUtils; import com.google.common.io.CharStreams; public class StreamUtil {
/**
* 将字符串转换为InputStream
* @param str
* @return
*/
public InputStream string2InputStream(String str){
return new ByteArrayInputStream(str.getBytes());
}
/**
* 采用jdk 的scanner 支持jdk1.5以上版本
   *正则表达式中,\A是指一个字符串的开头,可能大家用惯了^,而忽略了这个\A, 但是^其实是指一行的开始,而不管一个字符串里面包含多少行,\A都只匹配第一行的开头
   * 用\A作为分隔符,那么得到的当然就只有一个token,那就是整个字符串了。再配合Scanner,就轻易的将一个输入流转换为一个字符串了。
* 注意当需要做编码转换时,Scanner是有支持编码参数的构造方法的。
   * @param is
* @return
*/
public String inputStream2String_Scanner(InputStream is){
// InputStream inputStream = new FileInputStream("d:/sample.txt");
StringBuilder stringBuilder = new StringBuilder();
Scanner scanner = new Scanner(is);
while(scanner.hasNext()){
String text = scanner.useDelimiter("\\A").next();
stringBuilder.append(text);
}
scanner.close();
return stringBuilder.toString();
}
/**
* JDK1.4 及之前的 BufferedReader 法
* @param is
* @return
*/
public String inputStream2String_BufferReader(InputStream is){
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
String line = null; ;
try {
while((line = bufferedReader.readLine()) != null){
stringBuilder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
/**
* JDK1.4 及之前的 readBytes 法
* 缓冲区的大小自己根据实际来调,比 BufferedReader 还简洁些,不需管换行符的事情。
* @param is
* @return
* @throws IOException
*/
public String inputStream2String_bytes(InputStream is) throws IOException{
StringBuilder stringBuilder = new StringBuilder(); byte[] buffer = new byte[1024];
int readBytes = 0;
while((readBytes = is.read(buffer)) > 0){
stringBuilder.append(new String(buffer, 0, readBytes));
}
return stringBuilder.toString();
}
/**
* Apache commons IOUtils.toString 法
* 第三方库就是第三方库,人家充分考虑到了你的感受,你对 JDK 库的抱怨,多简洁,一行搞定。
* IOUtils 还能把内容拷入其他的 Writer 中,如 IOUtils.copy(inputStream, new StringWriter())。
* @param is
* @return
* @throws IOException
*/
public String inputStream2String_IOUtils(InputStream is) throws IOException{
return IOUtils.toString(is);
}
/**
* Google guava 的 CharStreams 方法
* CharSteams 不是直接作用在 InputSteam 上的,还要靠 InputStreamReader 拱个桥。
* @param is
* @return
* @throws IOException
* @throws UnsupportedEncodingException
*/
public String inputStream2String_CharStreams(InputStream is) throws UnsupportedEncodingException, IOException{
return CharStreams.toString(new InputStreamReader(is, "UTF-8"));
}
/**
* JDK 7 的 NIO readAllBytes
* @param path 读取文件路径 C:\\Users\\Administrator\\Desktop\\ChinaNet上网密码.txt
* @return
* @throws IOException
*/
public String inputStream2String_readAllBytes(String path) throws IOException{
byte[] bytes = Files.readAllBytes(Paths.get(path));
String text = new String(bytes);
return text;
}
}

关于InputStream 和String对象之间的相互转换的更多相关文章

  1. 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换

    [源码下载] 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 作者:webabcd 介绍速战速决 之 PHP ...

  2. inputStream、File、Byte、String等等之间的相互转换

    一:inputStream转换 1.inputStream转为byte //方法一 org.apache.commons.io.IOUtils包下的实现(建议) IOUtils.toByteArray ...

  3. C# Enum Name String Description之间的相互转换

    最近工作中经常用到Enum中Value.String.Description之间的相互转换,特此总结一下. 1.首先定义Enum对象 public enum Weekday { [Descriptio ...

  4. java int和String类型之间的相互转换

    String --> int 第一种方法:int i = Integer.parseInt(s); 第二种方法:int i = Integer.valueOf(s).intValue(); 两种 ...

  5. [技巧篇]19.InputStream与String,Byte之间互转[转载]

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  6. 包装类、基本数据类型及String类之间的相互转换

    包装类:8种基本数据类型对应一个类,此类即为包装类 一.基本数据类型 包装类 及String之间的转换 1.基本数据类型转化为包装类:调用包装类的构造器      int i=10;     Inte ...

  7. InputStream与String,Byte之间互转

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  8. byte数组与对象之间的相互转换

    在进行网络通信时可能需要传输对象,如果用NIO的话,只能用Bytebuffer和channel直接 通过ByteArray*Stream和Object*Stream可以将byte数组和对象进行相互的转 ...

  9. C# json与对象之间的相互转换

    1. 添加命名空间 using System.Runtime.Serialization.Json; 2. WriteObject方法 // 从一个对象信息生成Json串 public static ...

随机推荐

  1. HDU2680 Choose the best route 最短路 分类: ACM 2015-03-18 23:30 37人阅读 评论(0) 收藏

    Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. 3.emWin5.26(ucGui)VS2008 2-D图形库-基本绘图【Worldsing笔记】

    UCGUI(emWin) 2-D图形库--之基本板绘图,在ucgui的基本绘图功能上来看,功能还是比较全的,本例程主要使用基本的接口,两个主要的概念是绘制(draw)和填充(Fill),这两的区别是一 ...

  3. Spring4.0+Hibernate4.0+Struts2.3整合包括增删改查案例,解决整合中出现的异常

    源码下载:http://download.csdn.net/detail/cmcc_1234/7034775 ======================Application.xml======== ...

  4. Java垃圾回收器

    一.Java垃圾回收器要负责完成以下3个任务: 1.分配内存 2.确保被引用对象的内存不被错误回收 3.回收不再被引用的对象的内存空间 二.垃圾回收是一个复杂而又耗时的操作.如果JVM花费过多的时间在 ...

  5. android AsyncHttpClient 开源框架的使用

    AsyncHttpClient 1.在很多时候android都需要进行网络的操作,而android自带的HttpClient可以实现,但要进行很多网络连接的时候(如:下载很多图片),就需要线程池来进行 ...

  6. android Intent的startActivityForResult()方法

    startActivityForResult() 之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.A ...

  7. 消息系统Kafka介绍 - 董的博客

    1.  概述 Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据.活跃的流式数据在web网站应用中非常常见,这些数据包括网站的pv.用户访问了什么内容,搜索了 ...

  8. DeleteDC() 与 ReleaseDC() 的区别 [转]

    DeleteDC 该函数删除指定的设备上下文环境(DC). 原型: BOOL DeleteDC(HDC hdc): 参数: hdc:设备上下文环境的句柄. 返回值: 成功,返回非零值:失败,返回零.调 ...

  9. STM32的TAMPER-RTC管脚作为Tamper使用 - 防拆机

    当 TAMPER引脚上的信号从 0变成1或者从 1变成 0(取决于备份控制寄存器BKP_CR的 TPAL位),会产生一个侵入检测事件.侵入检测事件将所有数据备份寄存器内容清除.  然而为了避免丢失侵入 ...

  10. 远程调用WMI安装软件

     Invoke-WMIMethod  -ComputerName $ip -Credential $cred -path Win32_product -Name Install -ArgumentLi ...