如何在Java中解决Broken Pipe?

时间:2014-02-22 06:13:42

标签: java socket.io fileinputstream socketexception broken-pipe

我从文件夹目录中读取文件时遇到了Broken Pipe Exception。请仔细阅读以下代码......

FileInputStream inputStream = new FileInputStream(file);
ServletOutputStream outputStream = response.getOutputStream();        
IOUtils.copy(inputStream, outputStream);
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);

在IOUtils.copy(inputStream,outputStream)中复制inputStream和outputStream时发生了断管;

我如何解决断管?我可以使用PipedInputStream吗?这是处理此异常的正确方法吗。

1 个答案:

答案 0 :(得分:1)

这是由写入已经被对等方关闭的连接引起的。

在这种情况下,对等方是Web浏览器或Web客户端应用程序。

如果是前者,你无能为力。用户可以随时取消下载,这将导致管道异常中断。

在第二种情况下,客户端应用程序可能有问题。

在任何一种情况下,你都无法在服务器代码中做到这一点,除了记录它并忘掉它。