javaftp多线程下载文件
/**
*参考例子如下:
*@paramnamelist下载的文件列表
*@parampath下载路径
*@paramzipname压缩文件名称
*/
publicvoidzipDownloadFile(HttpServletResponseresponse,List<string>namelist,Stringpath,Stringzipname){
byte[]buf=newbyte[1024];
try{
//本地保存设置
response.addHeader("Content-Disposition","attachment;filename="
+URLEncoder.encode(zipname,sysEncoding)+".zip");
response.setContentType("application/x-zip-compressed");
//向本地写文件
ServletOutputStreamsos=response.getOutputStream();
ZipOutputStreamzipOut=newZipOutputStream(newBufferedOutputStream(sos));
for(Stringname:namelist){
ZipEntryentry=newZipEntry(name);
zipOut.putNextEntry(entry);
InputStreambis=this.getStream(path,name);
if(bis!=null){
intreadLen=-1;
while((readLen=bis.read(buf,0,1024))!=-1){
zipOut.write(buf,0,readLen);
}
bis.close();
}
}
zipOut.close();
}catch(Exceptione){
e.printStackTrace();
}
}</string>
‘贰’ 如何设置多线程FTP下载
FlashfXP只能单线程下载,可以先用FlashfXP登录FTP站点,选中你要下载的文件,右击鼠标,在出现的菜单上选择:“复制URL(Ctrl+U)”,FlashfXP会提示:“是否复制用户名及密码?”,选择“是”,然后打开迅雷,点“新建(Ctrl+N)”下载任务,在出现的界面上边:“网址(URL)”里面(Ctrl+V)填上刚刚粘贴的信息,这样迅雷就可以从你的FTP站点多线程下载文件了,而且你可以同时下载不同的文件,也是多线程的。当然,万一你的FTP站点是限制单线程下载的话,为了充分利用带宽,就只好同时下载其他文件来提高效率。万一你的FTP站点是限制每个IP只能单线程下载一份文件,这个办法可能就无能为力了。希望能帮到你,呵呵~~
‘叁’ java ftp批量下载异常
我之前也遇到过这样的事,通过FTP获取文件的二进制流有限制,获取第二个流的时候需要断掉链接后再重新连接服务器读取流
‘肆’ 怎样通过java实现服务器上文件下载
用HttpClient(commons httpclient)包,模拟一个Get请求,发送到网址172.16.30.230/文件地址。这个文件地址不能是E/Map/123.txt,必须是暴露在服务器中的应用里的。就像你写的应用里的一个jsp页面的目录。
成功发送get请求后,就会得到response,里面有流。就是你下载的文件,然后可以通过FileOutputStream,指定你输出目录,写到磁盘上。
‘伍’ java如何实现基于http和ftp多线程下载工具...
要访问网络资源就要去了解你要访问的网络资源所使用的协议。一般来说我们所使用的协议都是公开式的协议,比如http协议,它在数据的前面部分先设置一些信息来说明它所发送的数据的大小,文件类型等等。而多线程的实现原理就是先从http协议中获取要下载的资源的资源大小,然后再分多个线程从不同的起点跟终点来分段下载资源。ftp资源的道理也是一样。当然我并不是网络方面的专家,对网络我也不懂。以后只是我个人见解。
以下是给你找的一个java实现的http多线程下载。你看看吧
http://shazi.javaeye.com/blog/99132
‘陆’ java FTP下载
检查一下是否timeout时间设置过短。不要设置内存或者处理器限制。 还有在IIS的metabase数据库中找一下FTP的设置,在那里找配置文件修改最直接。
通过CFtpFileFind 得到文件的URL之后,然后通过CHttpFile::QueryInfo 得到文件大小。
求采纳为满意回答。
‘柒’ C#多线程ftp下载的实现(java也可,关键是思路)
参考答案:读书之法,在循序而渐进,熟读而精思。——朱熹