JAVA的HTTP多线程下载程序。自己教学中使用的一段程序。
java 代码
- public class DownloadNetTest {
- private File fileOut;
- private URL url;
- private long fileLength=0;
-
- private int ThreadNum=5;
- public DownloadNetTest(){
- try{
- System.out.println("正在链接URL");
- url=new URL("http://211.64.201.201/uploadfile/nyz.mp3");
- HttpURLConnection urlcon=(HttpURLConnection)url.openConnection();
- fileLength=urlcon.getContentLength();
- if(urlcon.getResponseCode()>=400){
- System.out.println("服务器响应错误");
- System.exit(-1);
- }
- if(fileLength<=0)
- System.out.println("无法获知文件大小");
-
- printMIME(urlcon);
- System.out.println("文件大小为"+fileLength/1024+"K");
-
- String trueurl=urlcon.getURL().toString();
- String filename=trueurl.substring(trueurl.lastIndexOf('/')+1);
- fileOut=new File("D://",filename);
- }
- catch(MalformedURLException e){
- System.err.println(e);
- }
- catch(IOException e){
- System.err.println(e);
- }
- init();
- }
- private void init(){
- DownloadNetThread [] down=new DownloadNetThread[ThreadNum];
- try {
- for(int i=0;i<ThreadNum;i++){
- RandomAccessFile randOut=new RandomAccessFile(fileOut,"rw");
- randOut.setLength(fileLength);
- long block=fileLength/ThreadNum+1;
- randOut.seek(block*i);
- down[i]=new DownloadNetThread(url,randOut,block,i+1);
- down[i].setPriority(7);
- down[i].start();
- }
-
- boolean flag=true;
- while (flag) {
- Thread.sleep(500);
- flag = false;
- for (int i = 0; i < ThreadNum; i++)
- if (!down[i].isFinished()) {
- flag = true;
- break;
- }
- }
- System.out.println("文件下载完毕,保存在"+fileOut.getPath() );
- } catch (FileNotFoundException e) {
- System.err.println(e);
- e.printStackTrace();
- }
- catch(IOException e){
- System.err.println(e);
- e.printStackTrace();
- }
- catch (InterruptedException e) {
- System.err.println(e);
- }
- }
- private void printMIME(HttpURLConnection http){
- for(int i=0;;i++){
- String mine=http.getHeaderField(i);
- if(mine==null)
- return;
- System.out.println(http.getHeaderFieldKey(i)+":"+mine);
- }
- }
- public static void main(String[] args) {
- DownloadNetTest app=new DownloadNetTest();
- }
- }
分享到:
相关推荐
利用java多线程以及网络编程知识写的一个下载程序源码,程序根据被下载文件的大小启动相应个数的线程对其进行下载。
java多线程小程序实例 java多线程小程序实例
实现了FTP多线程下载,并有简单的包括进度条的界面,代码的运行:1 把自己的PC配置成FTP服务器(只需下载Serc-U软件)2 建立用户,用户名:zhangyu,密码:123,设置根目录,并拷贝进一些文件(这就是FTP服务器上的要...
运用多线程技术,练习Thread类得run方法和start方法。运用进度条显式表示下载进度。java多线程之赛马程序
java多线程聊天程序 GUI界面 socket实现,
Java多线程程序设计详细解析,详细介绍了多线程的方方面面,是java备考和面试宝典
Java多线程程序设计
Java多线程下载器
java多线程控制的赛跑程序,包括打包好的可执行程序
Java程序设计\java 多线程 适用于一般的Java学习者
java多线程设计 java 程序多线程设计课件 java 程序多线程设计课件
利用Java多线程和JFrame编写程序,实现企鹅在界面里移动
本程序是在原有基础上逐步完善的,第一版:http://download.csdn.net/detail/zpwmhx/4342943 第二版:http://download.csdn.net/detail/zpwmhx/4505209 详细文档请看: ...
本程序实现了多线程下载的功能,对于Java编程爱好者,Java网络编程爱好者、以及学习线程部分的读者都是很好的资料
java Swing窗体版多线程下载程序编写示例,多线程下载的实现, 将网络URL中指定的网络文件下载到本地文件中保存。 本代码中将完成新建任务构造器、配置文件构造器,保存下载信息,获取配置文件名,设置在前台显示...
免费的给大家看看 Java实现多线程下载源代码 学习学习
贪吃蛇的多线程java程序(java代码)
java swing实现的单任务多线程下载程序
这是一个多线程的java小程序,与大家分享.