国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中InputStream和String之間的轉換方法

2019-11-06 06:59:45
字體:
來源:轉載
供稿:網友

java中InputStream和String之間的轉化十分普遍,本文主要是總結一下轉換的各種方法,包括JDK原生提供的,還有一些外部依賴提供的。

1、InputStream轉化為String

1.1 JDK原生提供

方法一:byte[] bytes = new byte[0];bytes = new byte[inputStream.available()];inputStream.read(bytes);String str = new String(bytes);方法二:String result = new BufferedReader(new InputStreamReader(inputStream)) .lines().collect(Collectors.joining(System.lineSeparator()));方法三:String result = new BufferedReader(new InputStreamReader(inputStream)) .lines().parallel().collect(Collectors.joining(System.lineSeparator()));方法四:Scanner s = new Scanner(inputStream).useDelimiter("http://A");String str = s.hasNext() ? s.next() : "";方法五:String resource = new Scanner(inputStream).useDelimiter("http://Z").next();return resource;方法六:StringBuilder sb = new StringBuilder();String line;BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));while ((line = br.readLine()) != null) { sb.append(line);}String str = sb.toString();return str;方法七:ByteArrayOutputStream result = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int length;while ((length = inputStream.read(buffer)) != -1) { result.write(buffer, 0, length);}String str = result.toString(StandardCharsets.UTF_8.name());return str;方法八:BufferedInputStream bis = new BufferedInputStream(inputStream);ByteArrayOutputStream buf = new ByteArrayOutputStream();int result = bis.read();while(result != -1) { buf.write((byte) result); result = bis.read();}String str = buf.toString();return str;

1.2 Apache Common提供

方法九:StringWriter writer = new StringWriter();IOUtils.copy(inputStream, writer, StandardCharsets.UTF_8.name());String str = writer.toString();方法十:String str = IOUtils.toString(inputStream, "utf-8");

1.3 Google Guava提供

方法十一:String str = CharStreams.toString(new InputStreamReader(inputStream, StandardCharsets.UTF_8));方法十二:String str = new String(ByteStreams.toByteArray(inputStream));

針對一個2MB的文件的輸入流,多次執行測試如下(單位是毫秒):

方法十: 111 方法十一: 236 方法十二: 36 方法一: 36 方法二: 87 方法三: 66 方法四: 101 方法五: 178 方法六: 40 方法七: 21 方法八: 107 方法九: 31

從上述結果來看,方法七和方法九更好一些,而方法五和方法十一會更差一些。

2、String轉化為InputStream

2.1 JDK原生提供

InputStream is = new ByteArrayInputStream(str.getBytes());

2.2 Apache Common提供

InputStream targetStream = IOUtils.toInputStream(str, StandardCharsets.UTF_8.name());

2.3 Google Guava提供

InputStream targetStream = new ReaderInputStream(CharSource.wrap(str).openStream(), StandardCharsets.UTF_8.name());
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大兴区| 西林县| 龙江县| 宝清县| 汾阳市| 全椒县| 垣曲县| 绥棱县| 保靖县| 华宁县| 乐陵市| 昌黎县| 台中县| 湟源县| 宣汉县| 嘉祥县| 板桥市| 怀来县| 哈密市| 南岸区| 安平县| 若尔盖县| 大余县| 寻甸| 法库县| 水城县| 宁明县| 东至县| 百色市| 仙游县| 苍梧县| 兴化市| 深水埗区| 泗阳县| 东辽县| 克什克腾旗| 布拖县| 沈阳市| 明光市| 泰顺县| 唐海县|