package org.wsc.coderising.download; import java.io.IOException; import java.io.RandomAccessFile; import org.wsc.coderising.download.api.Connection; import org.wsc.coderising.download.api.ConnectionException; import org.wsc.coderising.download.api.DownloadListener; /** * 下载线程 * * @author Administrator * @date 2017年3月6日下午7:03:41 * @version v1.0 * */ public class DownloadThread extends Thread{ private RandomAccessFile accessFile; /** 连接 */ private Connection conn; /** 开始处 */ private int startPos; /** 结束处 */ private int endPos; /** 回调函数 */ private DownloadListener listener; public DownloadThread( Connection conn, int startPos, int endPos,DownloadListener listener){ this.conn = conn; this.startPos = startPos; this.endPos = endPos; this.listener = listener; } public void run(){ try { byte[] bt = conn.read(startPos, endPos); accessFile = new RandomAccessFile("./"+conn.getFileName(), "rw"); accessFile.seek(startPos); accessFile.write(bt); } catch (IOException e) { e.printStackTrace(); } catch (ConnectionException e) { e.printStackTrace(); }finally { if(accessFile != null){ try { accessFile.close(); } catch (IOException e) { e.printStackTrace(); } } if (conn != null) conn.close(); if(listener!=null) listener.notifyFinished(); } } }