请教一个问题
用流输出文件的时候,为什么文件末总是会多一行?大家有遇到过这种情况吗?
我的代码如下try
{
  String fileName = request.getParameter("filename");
  String filepath =request.getRealPath("/")+"web\\JRTJ\\message_data\\jrtj_message\\"+fileName;
  System.out.println("filepath is "+ filepath);
  
  //读到流中
  InputStream inStream=new FileInputStream(filepath);  //设置输出的格式 
  response.reset(); 
  response.setContentType("plain");
 // response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
  response.setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("gb2312"),"iso8859-1"));
  //循环取出流中的数据 
  byte[] b = new byte[10000]; 
  int len; 
  OutputStream outStream =  response.getOutputStream();
  System.out.println("IO test!");
  while((len=inStream.read(b)) >0)
  { 
     System.out.println(len);
     outStream.write(b,0,len);//这里输出过后,文件末尾会多一行,去不掉????
  }
  outStream.flush();
  outStream.close(); 
  inStream.close(); 
  }
  catch(Exception e)

      e.printStackTrace(); 
  } 在上面注明处,输出文件后老是会自动多一行,和原来的文件不一样
有人遇到过这种情况吗?

解决方案 »

  1.   

    System.out.println(len); 你前面有个这个啊.. 
      

  2.   

    用BufferedInputStream和BufferedOutputStream封装试试
      

  3.   

    System.out.println(len);看看这东西的最后一个输出是不是回车之类的换行字符
      

  4.   

    while(true) 
      { 
        if(len=inStream.read(b)) <=0){
           break;
        }
        System.out.println(len); 
        outStream.write(b,0,len);//这里输出过后,文件末尾会多一行,去不掉???? 
      } 
      

  5.   

    我只是用System.out.println()在屏幕打出东西测试啊,不影响我结果的。
      

  6.   

    直接输出没有问题
    应该是这里出问题了
      response.reset(); 
      response.setContentType("plain"); 
      response.setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("gb2312"),"iso8859-1")); 但是这里只是设置下载的格式是无类型的啊,怎么会传的时候多了一行?