bounty将在2天后过期。回答此问题可获得+200声望奖励。ndnenkov正在寻找标准答案:对于应该存在于代码库中的内容,没有提供答案。
我有一个输入源集合--字符串、文件等--我希望将它们连接起来并传递给一个API,该API期望从单个IO
对象中读取数据。(~10 GB),所以将它们读入内存并将它们连接成单个字符串是不可行的。(我也考虑过使用IO.pipe
,但增加额外的线程或进程似乎有些大材小用。)
在Ruby中是否有一个现有的库类来实现这个功能,参见Java的SequenceInputStream
?如果没有,是否有其他方法可以直接和习惯地实现它?
1条答案
按热度按时间jhdbpxl91#
不幸的是,它正在使用
IO.copy_stream
写入套接字要使
IO::copy_stream(src, ...)
正常工作,***src
的类似IO的对象应该具有readpartial
或read
方法。***因此,让我们尝试定义一个类,它在一系列IO对象上实现
IO#read
:**注意:**我没有深入研究规范的编码部分
现在,让我们将此类与
IO::copy_stream
一起使用:真管用!
结论
因为没有gem,所以唯一合理的解决方法是确定API所需的IO方法,并编写一个实现这些方法的类。
**附言:**事实上,有一个multi_io gem可以将多个IO源连接到一个IO对象中,但是它的方法不符合规范;例如,不能将
IO::copy_stream
与它一起使用。