【问题标题】:How to solve Broken Pipe in Java?如何解决 Java 中的断管?
【发布时间】:2014-02-22 06:13:41
【问题描述】:

我在从我的文件夹目录中读取文件时遇到了 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 时发生了 Broken Pipe。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    在任何一种情况下,您都无法在服务器代码中对它做任何事情,除了记录它并忘记它。

    【讨论】:

    • 我接受你的观点......它只是正确的......但如果客户有好的浏览器,我想解决这个问题......
    • 我认为你无法理解。它与“客户端是否具有良好的浏览器”无关。如果用户离开页面浏览,或取消下载,这就是用户想要做的。浏览器不应尝试继续下载用户不再需要的内容。服务器上的结果:管道损坏。期间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2011-08-24
    • 2019-10-12
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多