从公共方法返回InputStream

Dun*_*nie 8 java io inputstream

我有一个课程,一方面,InputStream从公共方法返回一个感觉是正确的,例如

public class MyClass {

    private File _file;

    ...

    public InputStream getInputStream() {
        return new FileInputStream( _file );
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我对这样做也非常谨慎,因为它让调用者有责任关闭这个流.我有什么方法可以避免这个问题?

Cup*_*Tae 9

取决于为什么这是你眼中的问题.如果你绝对必须返回一个InputStream并且有问题的文件不是太大,你可以将整个文件缓冲到一个字节数组中,关闭原始流和return new ByteArrayInputStream(buf).关闭a ByteArrayInputStream是没有必要的(事实上没有效果).

但是,如果返回一个"感觉正确" InputStream,那么调用者应该期待的是什么InputStream,以及所有这一切都没有意义,包括完成时关闭流的必要性?