嗯,就这样吧,先实现着。ftp下载需要 commons-net-3.6.jar包。参考了几篇文章,在文学上不能算原创了。
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Scanner;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class MKDownloader {
// 定义成员变量
private String path;
private String targetPath;
private DownFileThread[] threads;
private int threadNum;
private long length;
public MKDownloader(String path, String targetPath, int threadNum) {
super();
this.path = path;
this.targetPath = targetPath;
this.threads = new DownFileThread[threadNum];
this.threadNum = threadNum;
}
public void download() {
URL url;
try {
if(path.indexOf("http://")==0 || path.indexOf("https://")==0) {
url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(20 * 1000);
conn.setRequestMethod("GET");
conn.setRequestProperty("connection", "keep-alive");
conn.setRequestProperty("accept", "*/*");
// 获取远程文件的大小
length = conn.getContentLengthLong();
conn.disconnect();
}else if(path.indexOf("ftp://")==0) {
//System.out.println("Comming Soon...2");
//System.out.println("Comming Soon...");
String User="Anonymous";
String PassWord="";
String SerUrl=null;
ArrayList<String> DrvList=new ArrayList<String>();
String tempDrvs="/";
String fileName="";
int port=21;
if(path.indexOf("@")!=-1) {
User=path.substring(path.indexOf("//",0)+2,path.indexOf(":",path.indexOf("//")+2));
PassWord=path.substring(path.indexOf(":",path.indexOf("//"))+1,path.indexOf("@"));
SerUrl=path.substring(path.indexOf("@")+1,path.indexOf("/",path.indexOf("@")));
if(path.indexOf("/",path.indexOf("@")+1) < path.lastIndexOf("/")) {
tempDrvs=path.substring(path.indexOf("/",path.indexOf("@")+1)+1,path.lastIndexOf("/"));
}
}else {
SerUrl=path.substring(path.indexOf("//")+2 , path.in