你的这种想发挺不错的,但是我认为forword不会说是这样的一个作用。它是负责转发请求,而不是处理流的,虽然是有流的一个作用,但是机制应当是将文件处理后放到一个流中传到前台。那么所设置的若干response应当是无效的,会呗祛除掉。所以下载还是看下面代码,规规矩矩的使用IO流
<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>
<%@page import="java.text.*, java.io.*, com.stxdalian.mro.util.*" %>
<%
out.clear();
out = pageContext.pushBody();
request.setCharacterEncoding("UTF-8");
String fname = java.net.URLDecoder.decode(request.getParameter("fn"),"utf-8");
String oname = java.net.URLDecoder.decode(request.getParameter("on"),"utf-8");
String upDir ="";
String dname = upDir + fname;
File fp = new File(dname);
String fsize = String.valueOf(fp.length());
byte b[] = new byte[Integer.parseInt(fsize)];
response.setHeader("Content-type","application/unknowon");
response.setHeader("Content-Disposition","attachment; filename="" + java.net.URLEncoder.encode(oname, "UTF-8") +""");
response.setHeader("Content-Length",fsize+";");
response.setHeader("Content-Transfer-Encoding","binary");
response.setHeader("Pragma","no-cache");
response.setHeader("Expires","0");
if(fp.isFile()){
BufferedInputStream fin = new BufferedInputStream(new FileInputStream(fp));
BufferedOutputStream fon = new BufferedOutputStream(response.getOutputStream());
int read = 0;

try{
while((read = fin.read(b)) != -1){
fon.write(b,0,read );
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
if(fon!=null)
fon.close();
if(fin!=null)
fin.close();
}
}
%>
Web迅雷下载速度的影响因素为以下几点:
1.该文件本身的资源少,该文件所处服务器性能不是很卓越。
2.您可以换一种下载软件。例如:IDM是个人认为非常卓越的
3.和您宽带带宽及系统自身原因决定。例如ADSL
1M的宽带一般下载速度为100-110K/s
4.您可以尝试换一个下载地方
2.页面设置方法:

1。右键“我的电脑“
2。属性
3。高级-性能选项-高级
4。在虚拟内存栏-更改
5.根据自身需要修改虚拟内存


