Stream Closed at java.io.FileInputStream.read0(Native Method)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Stream Closed at java.io.FileInputStream.read0(Native Method)相关的知识,希望对你有一定的参考价值。

每次执行到(while ((i = in.read()) != -1) )这一行就报错,报错信息:
||
java.io.IOException: Stream Closed
at java.io.FileInputStream.read0(Native Method)
at java.io.FileInputStream.read(Unknown Source)
private byte[] readStream(InputStream in) throws IOException
int i = 0;
||
方法如下:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
System.out.println("进入readStream方法!");
while ((i = in.read()) != -1)
bos.write(i);
bos.flush();

return bos.toByteArray();


求大神指点啊!!!!!!!!!

参考技术A java.io.IOException: Stream Closed
看错误的话可能是in这个变量的stream被关闭了,可以看下in的定义和操作是否有关闭后又读取。追问

for (InputStream is : streams)
Files.write(readStream(is), new File(saveFilePath));
DicomUtil.deCompress(new File(ftp + saveFilePath));
dicomPaths.add(saveFilePath);
在 //解压 那个地方调的 readStream() 帮忙看看

追答

是否方便把所有代码发上来,片段的看没太看出来。如果代码比较多可以选择上传附件的形式
如果单单看上面代码的话,不排除是第一次for循环正确调用,然后流关闭,第二次调用时因为流被关闭报错,具体可以debug验证下

追问

我的QQ 296763822 提问字数有限

本回答被提问者采纳

JAXB:unmarshalexception - 带有链接异常:[java.io.IOException: Stream closed]

【中文标题】JAXB:unmarshalexception - 带有链接异常:[java.io.IOException: Stream closed]【英文标题】:JAXB : unmarshalexception - with linked exception: [java.io.IOException: Stream closed] 【发布时间】:2014-05-18 23:44:12 【问题描述】:

我正在尝试使用 SAX 解析我的 xml,我想使用 JaxB 来构建我的地图我的元素名称及其值。我还想覆盖 startElement 和 endElemnt 但到目前为止我已经到达这里并且我正在解组例外。任何帮助表示赞赏!。

JAXBContext jaxbContext = JAXBContext.newInstance(my.class);

      Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();  


     UnmarshallerHandler unmarshallerHandler = jaxbUnmarshaller.getUnmarshallerHandler();

     SAXParserFactory spf = SAXParserFactory.newInstance();
     SAXParser sp = spf.newSAXParser();
     XMLReader xr = sp.getXMLReader();
     xr.setContentHandler(unmarshallerHandler);


     InputStream inputStream =   this.getClass().getResourceAsStream("my.xml");
     InputSource inputSource = new InputSource(inputStream);

     xr.parse(inputSource);



      JAXBElement  element  = (JAXBElement) jaxbUnmarshaller.unmarshal(inputSource);


       //or if I unmarahall to specific class object still i get same exception.

     catch (JAXBException e)   
     // some exception occured  
       e.printStackTrace();  
    

【问题讨论】:

【参考方案1】:

在对 InputSource 使用 SAX 解析之后,您无法解组它。在UnmarshallerHandler 上调用getResult 获取对象。

【讨论】:

那么如何将 xml 文件解组为 java 类对象? @SriHari - 这是您要查找的信息吗:wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted 在上面的链接中,我得到的响应为空。请查看 pojo 类以获取 xml 响应?

以上是关于Stream Closed at java.io.FileInputStream.read0(Native Method)的主要内容,如果未能解决你的问题,请参考以下文章

【JAVA】java.io.IOException: Stream closed问题!赶ddl!急!

JAXB:unmarshalexception - 带有链接异常:[java.io.IOException: Stream closed]

Java导出Excel,java.io.IOException: Stream is already closed

jsp报错java.io.IOException: Stream closed

我在用struts的时候,jsp页面出现了一个java.io.IOException: Stream closed的问题

后端跨域问题导致java.io.IOException: UT010029: Stream is closed解决办法