目前把数据库的数据导入到csv文件,使用bufferedwriter
response.setContentType("application/x-msdownload;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="+ new String("数据.csv".getBytes(), "iso-8859-1"));
ServletOutputStream out = response.getOutputStream();
BufferedWriter bufWriter = new BufferedWriter(new OutputStreamWriter(out));  大约下载的文件到达9M左右,数据没有下载完整,请教大家bufferedwriter是否有生成文件大小限制,另外如何设置bufferedwriter的缓存大小,如  BufferedWriter bufWriter = new BufferedWriter(new OutputStreamWriter(out),s);
s的值应设成什么,多大比较好。谢谢!  

解决方案 »

  1.   

    你应该是用字节数组来处理吧,byte[] b = new byte[1024]; 
    while()
    bufWriter.write(b);
    完后还要flush
      

  2.   

    byte[] b = new byte[1024];
    这样太大了,也可能读不完整,建议用
    byte[] b = new byte[];
    或者 byte[] b = new byte[1];
      

  3.   

    如  BufferedWriter bufWriter = new BufferedWriter(new OutputStreamWriter(out),s);
    s的值应设成什么,多大比较好
    s是一个正整数,多大比较好不好说
      

  4.   

    既然存在着数据的丢失,那么要是我的话,我就不用BufferedWriter了,我用字节流来读取,呵呵就是不知道LZ是不是一定要用BufferedWriter了byte[] buff=new byte[1024];
    ServletOutputStream out = response.getOutputStream(); 
    BufferedOutputStream bos=new BufferedOutputStream(out);
    int len=0;
    while(....){
    bos.write(buff,0,len);
    }
    bos.close();
      

  5.   

    用BufferedOutputStream 来读。可以一个字节一个字节读,cache到一定量如1024字节再写一次文件。记得最后把剩下的未达到1024字节的那段写进去。
      

  6.   

    我把程序改成response.setContentType("application/x-msdownload;charset=utf-8");
    response.setHeader("Content-Disposition", "attachment;filename="
    + new String("数据.csv".getBytes(), "iso-8859-1"));
    ServletOutputStream out = response.getOutputStream();
    BufferedOutputStream bos = new BufferedOutputStream(out);
                    。
                    while (rs.next())
    {
                         sbData = new StringBuffer();
                         sbData.append("dsdf");
                         ...
                         sbData.append("\n");
         bos.write(sbData.toString().getBytes());
                    }
                    rs.close();
    bos.flush();
    bos.close();
    out.close();文件大小也是限制在9M左右,到底是哪里错了,各位高手帮忙看看,谢谢!