将ByteArrayInputStream强制转换为InputStream

时间:2013-05-16 07:51:42

标签: java jruby bytearrayinputstream

我有一些代码可以:

content = Java::byte[s].new
f = tar.read(content, 0, s)
content_stream = ByteArrayInputStream.new(content)

到目前为止,这么好

但是当我尝试使用只接受InputStream的方法时,就像这样:

metadata = ImageMetadataReader.readMetadata(content_stream)

我得到以下异常:

NameError: no method 'readMetadata' for arguments (java.io.ByteArrayInputStream) on Java::ComDrewImaging::ImageMetadataReader

我尝试过使用content_stream.to_java(java.io.InputStream)但仍会产生相同的错误。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

单参数readMetadata()接受一个文件;有一个双参数,它带有一个* Buffered * InputStream和一个布尔值。您可以将ByteArrayInputStream包装在BufferedInputStream中,并决定是否要“waitForBytes”,无论这意味着什么......

答案 1 :(得分:0)

这是因为readMetadata有2个签名,一个带有一个参数:一个ja​​va.io.File和一个你尝试使用的第二个带有2个参数的ByteArrayInputStream和一个布尔值。尝试使用ImageMetadataReader.readMetadata(content_stream, false)

替换您的代码