日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

用Java下載文件。多線程,這行得通嗎?

瀏覽:191日期:2024-05-04 18:34:44
如何解決用Java下載文件。多線程,這行得通嗎??

意見建議:

使用SwingWorker進行后臺線程工作。在您的SwingWorker內部,通過設置其進度“ bound”屬性setProgress(int progress)。該值應在1到100之間。不要讓您的SwingWorker /文件下載器擁有JProgressBar或任何Swing組件。將Propertychangelistener添加到您的SwingWorker,并監視progress屬性中的更改。切勿將您的Swing字段(或大多數和所有字段)公開。限制訪問,而是通過方法更改對象狀態。閱讀Swing中的并發教程以獲取必要的詳細信息。

例如,下面的代碼是一個簡單的簡化,不下載任何文件,但是應該可以使您了解:

import java.awt.*;import java.beans.PropertyChangeEvent;import java.beans.Propertychangelistener;import java.util.Random;import javax.swing.*;public class Initial { static AtomFrame atomLauncher; public static void main(String[] args) { atomLauncher = new AtomFrame(); atomLauncher.start(); System.out.println(Integer.MAX_VALUE); final Download theDownload = new Download(); theDownload.addPropertychangelistener(new Propertychangelistener() { @Override public void propertyChange(PropertyChangeEvent pcEvt) { if ('progress'.equals(pcEvt.getPropertyName())) { int progress = theDownload.getProgress(); atomLauncher.setProgress(progress); } } }); theDownload.execute(); }}class AtomFrame extends JFrame { // ********* should be private! private JProgressBar progressBar; private static final long serialVersionUID = 4010489530693307355L; public static void main(String[] args) { AtomFrame testFrame = new AtomFrame(); testFrame.start(); } public void setProgress(int progress) { progressBar.setValue(progress); } public AtomFrame() { initializeComponents(); } public void initializeComponents() { this.setSize(400, 400); this.setLocationRelativeto(null); this.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); this.setTitle('Atom Launcher'); this.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); progressBar = new JProgressBar(); this.add(progressBar); // this.pack(); } public void start() { this.setVisible(true); } public void close() { this.dispose(); }}class Download extends SwingWorker<Void, Void> { private static final long SLEEP_TIME = 300; private Random random = new Random(); @Override protected Void doInBackground() throws Exception { int myProgress = 0; while (myProgress < 100) { myProgress += random.nextInt(10); setProgress(myProgress); try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException e) {} } return null; }}解決方法

首先,每個人都需要知道我對Java編碼還比較陌生。更準確地說,我是面向對象編程的新手。

問題。

我試圖創建一個下載類來更新進度條,以顯示其進度。可能還有其他決定,我決定在以后進行更新。

目前的問題是,在我看來,這不起作用。我可以在“主要”方法上做任何我想做的事情,而且GUI仍然響應迅速。根據我過去的編程經驗,除非我對GUI進行線程化,否則這是不可能的。為什么是這樣?

既然可以了,這樣可以嗎?

主班

package atomicElectronics;import java.io.IOException;import atomicElectronics.physical.AtomFrame;import atomicElectronics.utility.Download;public class Initial { static AtomFrame atomLauncher; public static void main(String[] args) {atomLauncher = new AtomFrame();atomLauncher.start();System.out.println(Integer.MAX_VALUE);Download theDownload = new Download();theDownload.fileProgressBar(atomLauncher.progressBar);try { theDownload.exicute('http://download.videolan.org/pub/videolan/vlc/last/win64/vlc-2.1.3-win64.exe','C:UsersTrinaryAtomAppDataRoaming');} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();}// TODO Add Download Methods// theDownload.updateBarTotal(JProgressBar);// theDownload.updateLabelSpeed(String);// theDownload.updateLabelTotal(String);// theDownload.addFile(File);// theDownload.addFiles(Files); }}

類AtomFrame

package atomicElectronics.physical;import javax.swing.JFrame;import java.awt.FlowLayout;import javax.swing.JProgressBar;public class AtomFrame extends JFrame{ public JProgressBar progressBar; private static final long serialVersionUID = 4010489530693307355L; public static void main(String[] args){AtomFrame testFrame = new AtomFrame();testFrame.start(); } public AtomFrame(){initializeComponents(); } public void initializeComponents(){this.setSize(400,400);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setTitle('Atom Launcher');this.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));progressBar = new JProgressBar();this.add(progressBar);//this.pack(); } public void start() {this.setVisible(true); } public void close() {this.dispose(); }}

類下載

package atomicElectronics.utility;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import javax.swing.JProgressBar;public class Download { private static final int BUFFER_SIZE = 4096; private JProgressBar fileProgressBar; public Download() { } public void fileProgressBar(JProgressBar fileBar) {fileProgressBar = fileBar; } public void exicute(String fileURL,String saveDir) throws IOException {URL url = new URL(fileURL);HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();int responseCode = httpConn.getResponseCode();// always check HTTP response code firstif (responseCode == HttpURLConnection.HTTP_OK) { String fileName = ''; String disposition = httpConn.getHeaderField('Content-Disposition'); String contentType = httpConn.getContentType(); double contentLength = httpConn.getContentLength(); if (disposition != null) {// extracts file name from header fieldint index = disposition.indexOf('filename=');if (index > 0) { fileName = disposition.substring(index + 9,disposition.length()); }} else { // extracts file name from URL fileName = fileURL.substring(fileURL.lastIndexOf('/') + 1,fileURL.length());}System.out.println('Content-Type = ' + contentType);System.out.println('Content-Disposition = ' + disposition);System.out.println('Content-Length = ' + contentLength);System.out.println('fileName = ' + fileName);// opens input stream from the HTTP connectionInputStream inputStream = httpConn.getInputStream();String saveFilePath = saveDir + File.separator + fileName;// opens an output stream to save into fileFileOutputStream outputStream = new FileOutputStream(saveFilePath);double totalRead = 0;int bytesRead = -1;byte[] buffer = new byte[BUFFER_SIZE];while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer,bytesRead); totalRead += bytesRead; System.out.println((totalRead / contentLength) * 100); fileProgressBar.setValue((int)((totalRead / contentLength) * 100));}outputStream.close();inputStream.close();System.out.println('File downloaded'); } else {System.out.println('No file to download. Server replied HTTP code: ' + responseCode); } httpConn.disconnect();}

}

標簽: java
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产一在线精品一区在线观看| 国产乱论精品| 国产精品夜夜夜| 男女男精品视频网| 欧美一级专区| 久久99青青| 久久激情综合网| 日韩av一二三| 欧美另类中文字幕| 欧美日韩网址| 国产精品一区二区精品| 国产精品亚洲四区在线观看| 欧美激情三区| 国内在线观看一区二区三区 | 99综合视频| 亚洲欧美日韩国产一区二区| 模特精品在线| 日韩欧美另类中文字幕| 日韩精品免费视频人成| 日本vs亚洲vs韩国一区三区二区| 91精品国产经典在线观看| 国产日本久久| 精品一区二区三区视频在线播放 | 亚洲欧洲另类| 好看的av在线不卡观看| 蜜桃视频一区二区| 亚洲精品看片| 国产精品亲子伦av一区二区三区| 久久99蜜桃| 亚洲综合在线电影| 久久婷婷亚洲| 在线综合视频| 日日夜夜免费精品| 欧美91在线|欧美| 高清一区二区| 激情婷婷欧美| 亚洲精品麻豆| 欧美成人精品一级| 欧美精品资源| 综合国产精品| 美女av一区| 99久久亚洲精品| 最新亚洲国产| 国产精品大片免费观看| 国产精品传媒麻豆hd| 97精品资源在线观看| 欧美精品导航| 高清久久精品| 99精品在线免费在线观看| 宅男在线一区| 亚洲精品午夜av福利久久蜜桃| 亚洲精品影院在线观看| 国产欧美亚洲精品a| 三级在线看中文字幕完整版| 激情91久久| 女人av一区| 日韩欧美久久| 亚洲午夜免费| 水蜜桃精品av一区二区| 日韩视频中文| 亚洲精品视频一二三区| 国产精品视频一区二区三区综合 | 亚洲一区免费| 国产精品视频一区视频二区| 精品成人免费一区二区在线播放| 久久国产精品久久久久久电车 | 日本欧美在线| 欧美日韩免费看片| 日韩精彩视频在线观看| 岛国精品一区| 亚洲人亚洲人色久| 精品免费av在线| 日韩激情av在线| 国产一区二区三区精品在线观看| 激情综合网站| 婷婷亚洲成人| 青青青免费在线视频| 国产亚洲在线| 天海翼精品一区二区三区| 国产乱子精品一区二区在线观看 | 91视频精品| 今天的高清视频免费播放成人| 免费在线成人网| 国产日韩一区二区三区在线 | 美女福利一区二区三区| 波多野结衣一区| 国产精品天天看天天狠| 99视频精品全部免费在线视频| 日本一区二区三区视频在线看 | 国产精品一站二站| 国产福利电影在线播放| 日本综合精品一区| 国产精品毛片在线看| 精品三级在线观看视频| 免费人成黄页网站在线一区二区| 波多野结衣久久精品| 国产精品mm| 综合国产在线| 久久xxxx精品视频| 亚洲午夜黄色| 国产欧美亚洲精品a| 制服诱惑一区二区| 美女毛片一区二区三区四区最新中文字幕亚洲 | 欧美一区二区三区高清视频| 青草久久视频| 欧美午夜精彩| 麻豆国产精品一区二区三区| 欧美日韩免费观看一区=区三区 | 国产精品色在线网站| av不卡在线看| 欧美极品中文字幕| 亚洲女同一区| 欧美日韩一区自拍| 欧美精品九九| 黑森林国产精品av| 国产精品亚洲欧美日韩一区在线| 欧美精品一二| 国产传媒在线观看| 国产精品视频一区视频二区| 欧美精品羞羞答答| 波多视频一区| 欧美激情福利| 香蕉久久一区| 色婷婷精品视频| 精品国产一区二区三区av片| 综合色一区二区| 久久狠狠婷婷| 日本一区二区免费高清| 美腿丝袜亚洲三区| 日韩av一级片| 亚洲精品激情| 奶水喷射视频一区| 日韩在线短视频| 激情久久99| 国产精品videossex| 日韩精品高清不卡| 亚洲一区二区毛片| 久久久一二三| 欧洲av不卡| 日韩在线中文| 欧美激情亚洲| 精品国产三区在线| 精品久久久久久久| 美女视频一区在线观看| 国产亚洲久久| 日韩av资源网| 日本中文字幕一区二区| 亚洲视频国产精品| 日韩国产精品久久久久久亚洲| 亚洲精品欧美| 亚洲日产国产精品| 亚洲一区有码| 日韩中文字幕av电影| 亚州欧美在线| 91成人福利| 日韩一区二区三免费高清在线观看 | 亚洲在线国产日韩欧美| 久久成人一区| 日韩成人午夜精品| 97在线精品| 亚洲精品日韩久久| 99精品视频在线| 久久人人99| 日韩影院在线观看| 国产亚洲一区二区三区啪| 乱一区二区av| 在线视频观看日韩| 午夜久久久久| 91亚洲精品在看在线观看高清| 国产伦精品一区二区三区视频| 国产在线一区不卡| 婷婷中文字幕一区| 日韩av一区二区三区四区| 国产一区二区久久久久| 久久一区二区三区电影| 蜜臀va亚洲va欧美va天堂| 欧美欧美黄在线二区| 日韩欧美三区| 国产福利亚洲| 精品视频免费| 色综合五月天| 欧美福利专区| 亚洲免费网址| 国产福利资源一区| 五月天综合网站| 日韩国产91| 国产不卡精品在线| 国产农村妇女精品一二区| 日韩av中文字幕一区二区| 日本午夜免费一区二区| 国产成人精选| 久久中文字幕二区| 黄色精品网站| 日韩国产欧美三级| 国产精品成人一区二区不卡| av在线最新| 欧美亚洲福利| 久久影视一区| 国产日韩欧美一区二区三区| 欧美不卡高清|