【问题标题】:How to convert a String[] array to InputStream in Java如何在 Java 中将 String[] 数组转换为 InputStream
【发布时间】:2013-09-27 19:00:54
【问题描述】:

我有一个String[] 数组,我需要将它转换为InputStream

我见过 Byte[] -> InputStreamString -> InputStream,但不是这个。有什么建议吗?

【问题讨论】:

  • 一个InputStream是什么?划界?长度前缀?
  • 一个 InputStream 是用于二进制的,也许您想要一个用于文本的 Reader?
  • 其实两个都行,但是我随意选择了问InputStream。

标签: java arrays string inputstream


【解决方案1】:

你可以用一些分隔符构造一个合并的String,然后到byte[],然后到ByteArrayInputStream

这是convert a String to InputStream in Java的方法。

【讨论】:

  • 是的......这就是我要走的路......用我的字符串数组压缩一个换行符数组并加入一个字符串......但我希望有一个更直接的路线。
【解决方案2】:

仍然没有单一的方法调用来执行此操作,但使用 Java 8,您可以在一行代码中完成。给定一个字符串对象数组:

    String[] strings = {"string1", "string2", "string3"};

您可以使用以下方法将 String 数组转换为 InputStream:

    InputStream inputStream = new ByteArrayInputStream(String.join(System.lineSeparator(), Arrays.asList(strings)).getBytes(StandardCharsets.UTF_8));

【讨论】:

    【解决方案3】:

    看看下面的链接:http://www.mkyong.com/java/how-to-convert-string-to-inputstream-in-java/

    但是,代码的不同之处在于,您应该在转换之前将所有字符串连接到一个字符串中。

     String concatenatedString = ... convert your array
    
            // convert String into InputStream
            InputStream is = new ByteArrayInputStream(str.getBytes());
    
            // read it with BufferedReader
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
    
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
    
            br.close();
    

    【讨论】:

      猜你喜欢
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多