1

我有一些代码可以:

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),但仍然会产生相同的错误。有任何想法吗?

4

2 回答 2

1

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

于 2013-05-16T08:13:20.863 回答
0

这是因为 readMetadata 有 2 个签名,一个带有一个参数:一个 java.io.File 和一个您尝试使用的带有 2 个参数的 ByteArrayInputStream 和一个布尔值。尝试将您的代码替换为ImageMetadataReader.readMetadata(content_stream, false)

于 2013-05-16T08:09:38.343 回答