文件到InputStream

我只是想将File转换为InputStream ,我该怎么做?

例如

 FileInputStream fis = new FileInputStream("c://filename"); InputStream is = ?; fis.close(); 

如何将FileInputStream转换为InputStream ,以便我可以closuresfis或者有任何其他方式将File转换为InputStream

您通常会首先从inputstream中读取数据,然后closures它。 您可以将FileInputStream包装在另一个InputStream(或Reader)中。 closures包装stream/阅读器时,它将自动closures。

如果这是一个将InputStream返回给调用者的方法,那么调用者有责任closuresstream。 如果您在方法中closures它,则调用者将无法使用它。

回答您的一些意见…

要将内容InputStream发送到远程使用者,您需要将InputStream的内容写入OutputStream,然后closures这两个stream。

远程用户不知道任何有关您创build的stream对象。 他只是收到他将创build的InputStream中的内容,读取和closures。

 InputStream is; try { is = new FileInputStream("c://filename"); is.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return is; 
 InputStream is = new FileInputStream("c://filename"); return is; 

FileInputStream 一个inputStream。

 FileInputStream fis = new FileInputStream("c://filename"); InputStream is = fis; fis.close(); return is; 

当然, 这不会做你想做的事情 ; 你返回的stream已经closures了。 只要返回FileInputStream并完成它。 调用代码应该closures它。

如果将一个stream包装到另一个stream中,则不会closures中间stream,而且非常重要:在完成使用外部stream之前,不要closures它们。 因为你也会closures外部stream。