尝试将inputstream复制到outputstream时发生Java IOException

尝试将inputstream复制到outputstream时发生Java IOException,java,exception,inputstream,ioexception,outputstream,Java,Exception,Inputstream,Ioexception,Outputstream,我正在尝试将inputstream图像写入OutputStream,以便在浏览器中显示图像这是代码: 试试看 { InputStream输入=Filer.readImage(“images/test.jpg”); 字节[]缓冲区=新字节[1024]; int字节读取; 而((bytesRead=input.read(buffer))!=-1) { 写入(缓冲区,0,字节读取); } } 捕获(IOE异常) { 系统输出打印ln(e); } readImage: 公共静态InputStream

我正在尝试将inputstream图像写入OutputStream,以便在浏览器中显示图像这是代码:

试试看
{
InputStream输入=Filer.readImage(“images/test.jpg”);
字节[]缓冲区=新字节[1024];
int字节读取;
而((bytesRead=input.read(buffer))!=-1)
{
写入(缓冲区,0,字节读取);
}
}
捕获(IOE异常)
{
系统输出打印ln(e);
}
readImage:

公共静态InputStream readImage(字符串文件)引发IOException{
try(InputStream输入=新文件InputStream(文件)){
返回输入;
}
}
但我在写作时出错了:

java.io.IOException:流已关闭

有什么想法吗?

退出区块时,“尝试使用资源”将关闭流

try (InputStream input = new FileInputStream(file)) {
当你的方法返回时

只需删除它,并注意关闭另一个方法体末尾的流


如注释中所述,.

退出块时,try with resources关闭流

try (InputStream input = new FileInputStream(file)) {
当你的方法返回时

只需删除它,并注意关闭另一个方法体末尾的流

如注释中所述,当语句完成时,从资源中获取的。

将关闭:

try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现java.io.Closeable的所有对象)都可以用作资源

在JavaSE7之前,您可以使用finally块来确保资源关闭,而不管try语句是正常完成还是突然完成。以下示例使用finally块而不是try with resources语句:

语句完成时,从资源中获取的数据将关闭:

try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现java.io.Closeable的所有对象)都可以用作资源

在JavaSE7之前,您可以使用finally块来确保资源关闭,而不管try语句是正常完成还是突然完成。以下示例使用finally块而不是try with resources语句:

在你的答案中加入答案会很好。