在Java中缓冲inputStream时出现奇怪的IOException

时间:2011-02-26 01:49:16

标签: java jvm inputstream buffering

我有一个关于缓冲pdf和odt文件的inputStream的奇怪问题。它们不是那么大,只有5到15页,但它总是像这样结束

java.io.IOException: Stream closed
    at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:134)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
    at java.io.FilterInputStream.read(FilterInputStream.java:90)

您可以看到source code here。我在这里问,因为它似乎不是Apache Tika问题,而是JVM问题。

编辑:对不起家伙提出这样一个愚蠢的问题,那是凌晨4点:-)问题是5次测试中有4次失败,所以我预计类加载器会找到这些资源,但事实并非如此。有一个错字“文件/文件”... Stil不明白为什么其中一个传递

2 个答案:

答案 0 :(得分:2)

很抱歉提出一个明显的问题,但是您尝试加载的资源文件是否可以在测试的类路径中访问?

String resourceLocation = "file/Designandrealizationofanintranetportal.pdf";

答案 1 :(得分:2)

极不可能是JVM / Java类库问题。它将是您的测试用例或Tika有问题。

当某些内容尝试从已关闭的Stream中读取时,会发生异常。并且标准流类不会自发地关闭。


如果我要弄清楚真正的问题是什么,我会使用调试器运行其中一个测试用例,在BufferedInputStream.close()方法上设置一个断点,并尝试找出它的位置,以及为什么它正在被召唤。