xihawuyou 2015-09-01 08:25 采纳率: 0%
浏览 2811

java下载zip文件socket write error

今天用java下载zip文件的时候老是出现如下错误,从网上找了错误原因,感觉答案解决不了我的问题:

ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:413)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:342)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:438)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:426)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)

代码如下:
File file = new File("d:/zhangrm/aa/test.zip");
response.reset();
response.setHeader("Content-Disposition", "attachment;filename="
.concat(String.valueOf(URLEncoder.encode(file.getName(), "UTF-8"))));
response.setContentType("application/x-msdownload");
response.setContentLength((int) file.length());

    try {

        InputStream inputStream = new FileInputStream(file);
        BufferedInputStream buffInput = new BufferedInputStream(inputStream);

        //写文件  
        byte[] b = new byte[1024];
        long k = 0;

        OutputStream outputStream = response.getOutputStream();
        BufferedOutputStream buffOutput=new BufferedOutputStream(outputStream);

         while (k < file.length()) {
             int j = buffInput.read(b, 0, 1024);
             k += j;
             buffOutput.write(b, 0, j);
         }
        buffOutput.flush();
        inputStream.close();
        buffInput.close();
        outputStream.close();
        buffOutput.close();

       // deleteFile(pathTo);
        //deleteFile(Const.ZIPFILENAME);

    } catch (IOException e) {
        log.error("数据下载失败!");
        e.printStackTrace();
    }

    望大神帮忙解决下!!!小妹不胜感激!
  • 写回答

1条回答

  • 天涯云海 2015-09-01 09:11
    关注
    BufferedInputStream buffInput = null;
        BufferedOutputStream buffOutput = null;
        try {
            buffInput = new BufferedInputStream(new FileInputStream(file));
            // 写文件
            byte[] b = new byte[1024];
            int k = -1;
            buffOutput = new BufferedOutputStream(response.getOutputStream()));
            while ((k = buffInput.read(b)) != -1) {
                buffOutput.write(b, 0, k);
            }
            buffOutput.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (buffOutput != null) {
                    buffOutput.close();
                }
                if (buffInput != null) {
                    buffInput.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程