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();
- }
- }
分享到:
相关推荐
运用多线程技术,练习Thread类得run方法和start方法。运用进度条显式表示下载进度。java多线程之赛马程序
java多线程小程序实例 java多线程小程序实例
java多线程聊天程序 GUI界面 socket实现,
java多线程设计 java 程序多线程设计课件 java 程序多线程设计课件
Java多线程下载器
采用apache commons开发包,实现了FTP多线程下载,并有简单的包括进度条的界面,代码的运行:1 把自己的PC配置成FTP服务器(只需下载Serc-U软件)2 建立用户,用户名:zhangyu,密码:123,设置根目录,并拷贝进一些...
Java多线程程序设计
利用java多线程以及网络编程知识写的一个下载程序源码,程序根据被下载文件的大小启动相应个数的线程对其进行下载。
Java多线程程序设计详细解析,详细介绍了多线程的方方面面,是java备考和面试宝典
转自命运之码的cnblogs博客,自己运行之后感觉效果...原述"这两天开发了一个Java的多线程下载程序,只支持Http下载,而且暂时没有提供断定续传功能。 共三个文件:Main.java,DownloadThread.java,MergeFile.java。
java多线程程序设计代码.zip实验五 java多线程程序设计代码.zip实验五 java多线程程序设计代码.zip实验五 java多线程程序设计代码.zip实验五 java多线程程序设计代码.zip实验五 java多线程程序设计代码.zip实验五 ...
利用Java多线程和JFrame编写程序,实现企鹅在界面里移动
java多线程实现TCP连接UDP聊天的聊天程序
刚学完多线程和线程池,以及线程爱好者。 使用场景及目标: 大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而...
免费的给大家看看 Java实现多线程下载源代码 学习学习
贪吃蛇的多线程java程序(java代码)
Java程序设计\java 多线程 适用于一般的Java学习者
java多线程控制的赛跑程序,包括打包好的可执行程序
一个java 多线程操作数据库应用程序!!!