如何在 Java 中将 String[] 数组转换为 InputStream

Posted

技术标签:

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

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

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

【问题讨论】:

一个InputStream是什么?划界?长度前缀? 一个 InputStream 是用于二进制的,也许您想要一个用于文本的 Reader? 其实两个都行,但是我随意选择了问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();

【讨论】:

以上是关于如何在 Java 中将 String[] 数组转换为 InputStream的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中将字符串集合转换为字符串数组[重复]

如何在Java中将对象数组转换为字符串数组

如何在java中将字节数组转换为hexString? [复制]

如何在java中将字符串数组转换为int数组[重复]

在Java 8中将整数数组转换为字符串数组的最简单方法[重复]

如何在Java中将字节数组转换为十六进制格式