【问题标题】:Find if InputStream of DataHandler is empty查找DataHandler的InputStream是否为空
【发布时间】:2010-12-21 15:36:05
【问题描述】:

在我的应用程序中,我开发了获取附件的 Web 服务。 该文件通过 JaxB 映射到 DataHandler 对象, 我可以通过 DataHandler.getInputStream() 访问该文件

我的问题是: 当 web 服务请求中存在文件属性,但没有附加文件时, 我仍然得到 DataHandler 对象,它的 getInputStream().available() = 11 bytes (我猜是标题...??)。

所以我可以知道 inputStream 是空的吗?

谢谢, 阿隆

【问题讨论】:

    标签: java web-services jaxb attachment mtom


    【解决方案1】:

    读取并解析应该解析的数据。答案就在里面。

    InputStream#available() 确实返回流的长度或您认为的那样。在某些情况下,它(巧合)可能,但你不应该依赖它。它只返回可用于读取而不阻塞其他线程的字节数。只需完全读取流the usual Java IO way,直到最后一位返回-1,然后拦截您收到的全部数据。

    【讨论】:

    • 但是如果文件很大,我将不得不解析整个文件...我有其他方法而不解析整个文件吗?
    • 另一个问题是我可以获得许多文件类型(图像、视频、mp3 等...)所以我不想根据文件的类型读取每个文件以查看 InputStream是空的。如果 InputStream 为空,我会在 InputStream().available() 中得到 11 个字节吗?
    • 不,这完全取决于对方。如果我是你,我会更多地研究它的文档和/或联系它的支持团队。这是不正常的,你永远不应该依赖available() 来表示某种长度。
    • DataHandler的InputStream的长度是不是在没有附加文件的时候总是11?
    猜你喜欢
    • 2011-02-19
    • 2010-12-04
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多