public SiteFileFetch(SiteInfoBean bean) throws IOException { siteInfoBean = bean; // tmpFile = File.createTempFile ("zhong","1111",new // File(bean.getSFilePath())); tmpFile = new File(bean.getSFilePath() + File.separator + bean.getSFileName() + ".info"); if (tmpFile.exists()) { bFirst = false; read_nPos(); } else { nStartPos = new long[bean.getNSplitter()]; // nEndPos = new long[bean.getNSplitter()]; } }
public void run() { // 获得文件长度 // 分割文件 // 实例FileSplitterFetch // 启动FileSplitterFetch线程 // 等待子线程返回 try { if (bFirst) { nFileLength = getFileSize(); if (nFileLength == -1) { System.err.println("File Length is not known!"); } else if (nFileLength == -2) { System.err.println("File is not access!"); } else { for (int i = 0; i < nStartPos.length; i++) { // 分割 nStartPos[i] = (long) (i * (nFileLength / nStartPos.length)); } for (int i = 0; i < nEndPos.length - 1; i++) { // 分割 nEndPos[i] = nStartPos[i + 1]; } nEndPos[nEndPos.length - 1] = nFileLength; } } // 启动子线程 fileSplitterFetch = new FileSplitterFetch[nStartPos.length]; for (int i = 0; i < nStartPos.length; i++) { fileSplitterFetch[i] = new FileSplitterFetch( siteInfoBean.getSSiteURL(), siteInfoBean.getSFilePath() + File.separator + siteInfoBean.getSFileName(), nStartPos[i], nEndPos[i], i); Utility.log("Thread " + i + " , nStartPos = " + nStartPos[i] + ", nEndPos = " + nEndPos[i]); fileSplitterFetch[i].start(); } /* * fileSplitterFetch[nPos.length-1] = new * FileSplitterFetch(siteInfoBean.getSSiteURL(), * siteInfoBean.getSFilePath()+ File.separator + * siteInfoBean.getSFileName(),nPos[nPos.length-1],nFileLength,nPos.length-1); * Utility.log("Thread " + (nPos.length-1) + " , nStartPos = " + * nPos[nPos.length-1] + ", nEndPos = " + nFileLength); * fileSplitterFetch[nPos.length-1].start(); 等待子线程结束 int count = 0; * 是否结束while循环 */ boolean breakWhile = false; while (!bStop) { write_nPos(); Utility.sleep(500); breakWhile = true; for (int i = 0; i < nStartPos.length; i++) { if (!fileSplitterFetch[i].bDownOver) { breakWhile = false; break; } } if (breakWhile) break; // count++; // if(count>4) // siteStop(); } System.err.println("文件下载结束!"); } catch (Exception e) { e.printStackTrace(); } }