首页 > 代码库 > 关于InputStream 和String对象之间的相互转换
关于InputStream 和String对象之间的相互转换
代码如下:
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以上版本 * @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对象之间的相互转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。