如何将FileInputStream转换为InputStream?

时间:2012-06-19 12:14:12

标签: java fileinputstream

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

例如

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

5 个答案:

答案 0 :(得分:132)

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;

答案 1 :(得分:54)

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

答案 2 :(得分:35)

FileInputStream 是一个inputStream。

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

当然,这不会做你想做的事;您返回的流已经关闭。只需返回FileInputStream即可完成。调用代码应该关闭它。

答案 3 :(得分:6)

您通常首先从输入流中读取然后将其关闭。您可以将FileInputStream包装在另一个InputStream(或Reader)中。关闭包装流/阅读器时,它将自动关闭。

如果这是一个将InputStream返回给调用者的方法,则调用者有责任在完成后关闭该流。如果您在方法中关闭它,调用者将无法使用它。

回答你的一些评论...

要将内容InputStream发送给远程使用者,您可以将InputStream的内容写入OutputStream,然后关闭两个流。

远程消费者对您创建的流对象一无所知。他只是在一个他将创建,读取和关闭的InputStream中接收内容。

答案 4 :(得分:2)

如果将一个流包装到另一个流中,则不会关闭中间流,这非常重要:在使用外部流之前不要关闭它们。因为你也会关闭外部流。