zoukankan      html  css  js  c++  java
  • java常用string inputStream转换

     

    1、String –> InputStream

    InputStrem is = new ByteArrayInputStream(str.getBytes());
    或者
    ByteArrayInputStream stream= new ByteArrayInputStream(str.getBytes());

     2、InputStream–>String

    复制代码
    inputStream input;
    
    StringBuffer out = new StringBuffer();
         byte[] b = new byte[4096];
         for (int n; (n = input.read(b)) != -1;) {
              out.append(new String(b, 0, n));
         }
    out.toString();
    复制代码

    3、Reader –>String

    复制代码
    BufferedReader in = new BufferedReader(new InputStreamReader(is));
    StringBuffer buffer = new StringBuffer();
    String line = " ";
    while ((line = in.readLine()) != null){
         buffer.append(line);
    }
    return buffer.toString();
    复制代码

    4、String–>Reader

    复制代码
    Reader reader = null;
    BufferedReader r = new BufferedReader(reader);
    StringBuilder b = new StringBuilder();
    String line;
    while((line=r.readLine())!=null) {
         b.append(line);
         b.append(“\r\n”);
    }
    b.toString();
    复制代码
     
    分类: Java SE
     
    _____________________________________________________________________________________________________________________________________________
     

    Java中InputStream和String之间的转换方法

     在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("\\A");
    String str = s.hasNext() ? s.next() : "";
     
    方法五:
    String resource = new Scanner(inputStream).useDelimiter("\\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());
    ————————————————
    原文链接:https://blog.csdn.net/lmy86263/article/details/60479350

     
     
     
  • 相关阅读:
    变量的创建和初始化
    HDU 1114 Piggy-Bank (dp)
    HDU 1421 搬寝室 (dp)
    HDU 2059 龟兔赛跑 (dp)
    HDU 2571 命运 (dp)
    HDU 1574 RP问题 (dp)
    HDU 2577 How to Type (字符串处理)
    HDU 1422 重温世界杯 (dp)
    HDU 2191 珍惜现在,感恩生活 (dp)
    HH实习 acm算法部 1689
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/15711830.html
Copyright © 2011-2022 走看看