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

📄 downfilesplitter.java

📁 用于多线程下载FTP文件, 有GUI界面, 可以直接编译
💻 JAVA
字号:
package multidownload;
import javax.swing.JTextArea;
import java.net.*;
import java.io.*;

public class DownFileSplitter extends Thread
{
    String dlURL;
    long startPos;
    long endPos;
    int threadID;
    JTextArea textArea=new JTextArea();
    boolean done=false;
    boolean stop=false;
    RandomAccessFile file;

    public DownFileSplitter(String dlURL,String saveAs,long nStart,long nEnd,
                            int id,JTextArea textArea) throws IOException
    {
        this.dlURL=dlURL;
        this.startPos=nStart;
        this.endPos=nEnd;
        this.threadID=id;
        this.textArea=textArea;
        file=new RandomAccessFile(saveAs,"rw");
        file.seek(startPos);
    }


    public void run()
    {
        try
        {
            URL url=new URL(dlURL);
            HttpURLConnection httpConnection=(HttpURLConnection)url.openConnection();
            String sProperty="bytes="+startPos+"-";
            httpConnection.setRequestProperty("RANGE",sProperty);
            System.out.println("线程"+threadID+"下载文件、、、请等待");
            textArea.append("\n 线程"+threadID+"下载文件、、、请等待");
            InputStream input=httpConnection.getInputStream();
            byte[] buf=new byte[1024];
            int offset;
            offset=(int)endPos-(int)startPos;
            if(offset>1024)
                offset=1024;
            while(input.read(buf,0,offset)>0 && startPos<endPos)
            {
                offset = (int) endPos - (int) startPos;
                if (offset > 1024)
                    offset = 1024;
                System.out.println("threadID: "+threadID+" started: "+startPos+"  offset: "+offset);
                file.write(buf,0,offset);
                startPos+=offset;
            }
            System.out.println("线程"+threadID+"下载完毕!!");

            textArea.append("\n 线程"+threadID+"下载完毕!!");
            file.close();
            input.close();
            done=true;
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }

    }
}

⌨️ 快捷键说明

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