gpt4 book ai didi

java - 任何使用大字符串并返回 InputStream 的实用程序类/方法?

转载 作者:搜寻专家 更新时间:2023-11-01 02:43:35 25 4
gpt4 key购买 nike

我正在寻找一些 util 类/方法来获取一个大的 String 并返回一个 InputStream

如果 String 很小,我可以这样做:

InputStream is = new ByteArrayInputStream(str.getBytes(<charset>));

但是当 String 很大(1MB、10MB 或更多)时,当场分配一个 1 到 2 倍(或更多?)的字节数组作为我的 String 大小。 (并且由于在完成所有编码之前您不知道要分配多少字节,所以我认为在分配最终字节数组之前必须分配其他数组/缓冲区)。

我有性能需求,想优化这个操作。

理想情况下,我认为我正在寻找的类/方法会在 InputStream 被消耗时一次一小块地动态编码字符,因此内存分配不会大幅增加。

查看apache commons IOUtils.toInputStream(..)的源代码,我看到它也将String一次性转换为一个大字节数组。

并且 StringBufferInputStream 已弃用,并且无法正确完成工作。

是否有来自任何地方的此类实用程序类/方法?或者我可以只写几行代码来做到这一点?

这样做的功能需要是,在其他地方,我使用了一个 util 方法,它接受一个 InputStream 并从这个 InputStream 流出字节。

我似乎没有其他人在寻找这样的东西。我是不是哪里弄错了什么?

我已经开始为此编写一个自定义类,但如果有更好/适当/正确的解决方案/更正满足我的需要,我会停止。

最佳答案

Java 内置库假定您只需要在输出中从字符转换为字节,而不是输入。 Apache Commons IO 库有 ReaderInputStream , 然而,它可以包装一个 StringReader 来获得你想要的。

关于java - 任何使用大字符串并返回 InputStream 的实用程序类/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com