首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ByteArrayInputStream强制为InputStream

将ByteArrayInputStream强制为InputStream
EN

Stack Overflow用户
提问于 2013-05-16 15:51:42
回答 2查看 487关注 0票数 1

我有一些代码可以做到:

代码语言:javascript
复制
content = Java::byte[s].new
f = tar.read(content, 0, s)
content_stream = ByteArrayInputStream.new(content)

到现在为止还好

但当我尝试使用只接受InputStream的方法时,如下所示:

代码语言:javascript
复制
metadata = ImageMetadataReader.readMetadata(content_stream)

我得到了以下异常:

代码语言:javascript
复制
NameError: no method 'readMetadata' for arguments (java.io.ByteArrayInputStream) on Java::ComDrewImaging::ImageMetadataReader

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-16 16:13:21

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

票数 1
EN

Stack Overflow用户

发布于 2013-05-16 16:09:38

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16581809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档