我只想将FileInputStream
转换为InputStream
,我该怎么做?
例如
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();
答案 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)
如果将一个流包装到另一个流中,则不会关闭中间流,这非常重要:在使用外部流之前不要关闭它们。因为你也会关闭外部流。