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();
    }

    望大神帮忙解决下!!!小妹不胜感激!
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();
        }
    }