大数据Java基础第十九天作业
生活随笔
收集整理的這篇文章主要介紹了
大数据Java基础第十九天作业
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
第一題:簡單的URL獲取資源下載
import?java.net.URL;
import?java.net.URLConnection;import?java.io.InputStream;
import?java.io.FileOutputStream;class?DownloadDemo{public?static?void?main(String[]?args){String?src_url?=?"http://one.jiangmin.com/jiangmin.zip";try{URL?url?=?new?URL(src_url);URLConnection?conn?=?url.openConnection();String?type?=?conn.getContentType();int?length?=?conn.getContentLength();InputStream?in?=?conn.getInputStream();FileOutputStream?fos?=?new?FileOutputStream("e:/jiangmin.zip");byte[]?buf?=?new?byte[1024];int?len?=?0;while((len?=?in.read(buf))?!=?-1){fos.write(buf);}fos.close();in.close();}catch(Exception?e){e.printStackTrace();}}
}第二題:URL多線程下載
import?javax.swing.JFrame;
import?javax.swing.JLabel;
import?javax.swing.JTextArea;
import?javax.swing.JButton;import?java.awt.event.MouseAdapter;
import?java.awt.event.MouseEvent;import?java.net.URL;
import?java.net.URLConnection;import?java.io.InputStream;
import?java.io.RandomAccessFile;import?java.util.List;
import?java.util.ArrayList;class?Download{private?static?final?long?serialVersionUID?=?-6944831795769317874L;public?static?void?main(String[]?args){new?DownloadWindow();}
}class?DownloadWindow?extends?JFrame{private?JTextArea?url_text;private?JTextArea?local_text;public?DownloadWindow(){ini();}public?void?ini(){this.setSize(600,400);this.setLocation(600,300);this.setLayout(null);JLabel?url_label?=?new?JLabel("URL?:?");url_label.setBounds(10,10,100,20);this.add(url_label);url_text?=?new?JTextArea();url_text.setEditable(true);url_text.setBounds(100,10,400,20);this.add(url_text);JLabel?local_label?=?new?JLabel("Local?:?");local_label.setBounds(10,40,100,20);this.add(local_label);local_text?=?new?JTextArea();local_text.setEditable(true);local_text.setBounds(100,40,400,20);this.add(local_text);JButton?down_button?=?new?JButton("Download");down_button.setBounds(200,110,200,50);down_button.addMouseListener(new?MouseAdapter(){public?void?mouseClicked(MouseEvent?e){String?src_url?=?url_text.getText();System.out.println(src_url);String?local_addr?=?local_text.getText();new?DownloadManager(DownloadWindow.this,src_url,local_addr,5).start();}});this.add(down_button);this.setVisible(true);}
}class?DownloadManager{private?DownloadWindow?window;private?String?src_url;private?String?local_addr;private?int?count;private?DownloadInfo?info;private?List<DownloadInfo>?info_list;public?DownloadManager(DownloadWindow?window,String?src_url,String?local_addr,int?count){this.window?=?window;this.src_url?=?src_url;this.local_addr?=?local_addr;this.count?=?count;prepareDownload();}public?void?prepareDownload(){info_list?=?new?ArrayList<DownloadInfo>();try{URL?url?=?new?URL(src_url);System.out.println(src_url);int?total_length?=?url.openConnection().getContentLength();RandomAccessFile?raf?=?new?RandomAccessFile(local_addr,"rw");raf.setLength(total_length);raf.close();System.out.println(total_length);System.out.println(count);int?block?=?total_length?/?count;DownloadInfo?info?=?null;for(int?i?=?0;i?<?count;i++){info?=?new?DownloadInfo();info.setSrcUrl(src_url);info.setLocalAddr(local_addr);if((count?-?1)?==?i){info.setEndPos(total_length?-?1);}else{info.setStartPos((i?+?1)?*?block?-?1);}info_list.add(info);}}catch(Exception?e){e.printStackTrace();}}public?void?start(){int?i?=?0;for(DownloadInfo?info?:?info_list){System.out.println(i);new?DownloadThread(window,info).start();i++;}}
}class?DownloadThread?extends?Thread{private?DownloadWindow?window;private?DownloadInfo?info;public?DownloadThread(DownloadWindow?window,DownloadInfo?info){this.window?=?window;this.info?=?info;}public?void?run(){try{System.out.println(info.getSrcUrl());URL?url?=?new?URL(info.getSrcUrl());URLConnection?connect?=?url.openConnection();connect.setRequestProperty("Range","bytes="?+?info.getStartPos()?+?"-"?+?info.getEndPos());InputStream?in?=?connect.getInputStream();RandomAccessFile?raf?=?new?RandomAccessFile(info.getLocalAddr(),"rw");raf.seek(info.getEndPos());byte[]?buf?=?new?byte[1024];int?len?=?0;while((len?=?in.read(buf))?!=?-1){raf.write(buf);}raf.close();}catch(Exception?e){e.printStackTrace();}}
}class?DownloadInfo{private?String?src_url;private?String?local_addr;private?int?start_pos;private?int?end_pos;public?DownloadInfo(){}public?DownloadInfo(String?src_url,String?local_addr,int?start_pos,int?end_pos){this.src_url?=?src_url;this.local_addr?=?local_addr;this.start_pos?=?start_pos;this.end_pos?=?end_pos;}public?String?getSrcUrl(){return?src_url;}public?void?setSrcUrl(String?src_url){this.src_url?=?src_url;}public?String?getLocalAddr(){return?local_addr;}public?void?setLocalAddr(String?local_addr){this.local_addr?=?local_addr;}public?int?getStartPos(){return?start_pos;}public?void?setStartPos(int?start_pos){this.start_pos?=?start_pos;}public?int?getEndPos(){return?end_pos;}public?void?setEndPos(int?end_pos){this.end_pos?=?end_pos;}
}
轉(zhuǎn)載于:https://blog.51cto.com/senlinmin/1790906
總結(jié)
以上是生活随笔為你收集整理的大数据Java基础第十九天作业的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【设计模式】责任链模式
- 下一篇: 运维常见统计表模板(word版)