⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 downloadthread.java

📁 完美的在线教育系统
💻 JAVA
字号:
package DokeosAppShare;import java.net.*;import java.io.*;import java.util.*;/** * Summary description for DownloadThread. */public class DownloadThread extends Thread{	private List listeners = new LinkedList();	private URL fileURL;	private File fileDest;	private boolean canceling = false;	public DownloadThread(URL fileURL, File fileDest)	{		this.fileURL = fileURL;		this.fileDest = fileDest;	}	public void cancel()	{		canceling = true;	}	public void run()	{		try		{			fireConnecting();			URLConnection connection = fileURL.openConnection();			int max = connection.getContentLength();			InputStream in = connection.getInputStream();			OutputStream out = new FileOutputStream(fileDest);			fireStarted();			fireProgressChange(0, max);			{				int count = 0;				int b = 0;				int readCount = 0;				byte[] buffer = new byte[1024*10];				b = in.read();				while (!canceling && b >= 0)				{					out.write(b);					count += 1;					readCount = in.read(buffer, 0, buffer.length);					out.write(buffer, 0, readCount);					count += readCount;					fireProgressChange(count, max);					b = in.read();				}			}			in.close();			out.close();			if (!canceling)			{				fireDone(fileDest);			}			else			{				//fireCancel(fileDest);			}		}		catch (Exception ex)		{			fireException(ex);			ex.printStackTrace();		}	}	public void addDownloadProgressEventListener(DownloadProgressEventListener eventListener)	{		synchronized (listeners)		{			listeners.add(eventListener);		}	}	public void removeDownloadProgressEventListener(DownloadProgressEventListener eventListener)	{		synchronized (listeners)		{			listeners.remove(eventListener);		}	}	protected void fireConnecting()	{		Object[] ls;		synchronized (listeners)		{			ls = listeners.toArray();		}		for (int i = 0; i < ls.length; i++)		{			((DownloadProgressEventListener)ls[i]).connecting();		}	}	protected void fireStarted()	{		Object[] ls;		synchronized (listeners)		{			ls = listeners.toArray();		}		for (int i = 0; i < ls.length; i++)		{			((DownloadProgressEventListener)ls[i]).started();		}	}	protected void fireProgressChange(int progress, int max)	{		Object[] ls;		synchronized (listeners)		{			ls = listeners.toArray();		}		for (int i = 0; i < ls.length; i++)		{			((DownloadProgressEventListener)ls[i]).progressChange(progress, max);		}	}	protected void fireDone(File fileDest) throws Exception	{		Object[] ls;		synchronized (listeners)		{			ls = listeners.toArray();		}		for (int i = 0; i < ls.length; i++)		{			((DownloadProgressEventListener)ls[i]).done(fileDest);		}	}	protected void fireException(Exception ex)	{		Object[] ls;		synchronized (listeners)		{			ls = listeners.toArray();		}		for (int i = 0; i < ls.length; i++)		{			((DownloadProgressEventListener)ls[i]).exception(ex);		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -