亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java使用Apache工具集實現ftp文件傳輸代碼詳解

2024-07-13 10:15:10
字體:
來源:轉載
供稿:網友

本文主要介紹如何使用Apache工具集commons-net提供的ftp工具實現向ftp服務器上傳和下載文件。

一、準備

需要引用commons-net-3.5.jar包。

使用maven導入:

<dependency>  <groupId>commons-net</groupId>  <artifactId>commons-net</artifactId>  <version>3.5</version></dependency>

 

二、連接FTP Server

/**   * 連接FTP Server   * @throws IOException   */public static final String ANONYMOUS_USER="anonymous";private FTPClient connect(){	FTPClient client = new FTPClient();	try{		//連接FTP Server		client.connect(this.host, this.port);		//登陸		if(this.user==null||"".equals(this.user)){			//使用匿名登陸			client.login(ANONYMOUS_USER, ANONYMOUS_USER);		} else{			client.login(this.user, this.password);		}		//設置文件格式		client.setFileType(FTPClient.BINARY_FILE_TYPE);		//獲取FTP Server 應答		int reply = client.getReplyCode();		if(!FTPReply.isPositiveCompletion(reply)){			client.disconnect();			return null;		}		//切換工作目錄		changeWorkingDirectory(client);		System.out.println("===連接到FTP:"+host+":"+port);	}	catch(IOException e){		return null;	}	return client;}/**   * 切換工作目錄,遠程目錄不存在時,創建目錄   * @param client   * @throws IOException   */private void changeWorkingDirectory(FTPClient client) throws IOException{	if(this.ftpPath!=null&&!"".equals(this.ftpPath)){		Boolean ok = client.changeWorkingDirectory(this.ftpPath);		if(!ok){			//ftpPath 不存在,手動創建目錄			StringTokenizer token = new StringTokenizer(this.ftpPath,"////");			while(token.hasMoreTokens()){				String path = token.nextToken();				client.makeDirectory(path);				client.changeWorkingDirectory(path);			}		}	}}/**   * 斷開FTP連接   * @param ftpClient   * @throws IOException   */public void close(FTPClient ftpClient) throws IOException{	if(ftpClient!=null && ftpClient.isConnected()){		ftpClient.logout();		ftpClient.disconnect();	}	System.out.println("!!!斷開FTP連接:"+host+":"+port);}

host:ftp服務器ip地址
port:ftp服務器端口
user:登陸用戶
password:登陸密碼
登陸用戶為空時,使用匿名用戶登陸。
ftpPath:ftp路徑,ftp路徑不存在時自動創建,如果是多層目錄結構,需要迭代創建目錄。

三、上傳文件

/**   * 上傳文件   * @param targetName 上傳到ftp文件名   * @param localFile 本地文件路徑   * @return   */public Boolean upload(String targetName,String localFile){	//連接ftp server	FTPClient ftpClient = connect();	if(ftpClient==null){		System.out.println("連接FTP服務器["+host+":"+port+"]失??!");		return false;	}	File file = new File(localFile);	//設置上傳后文件名	if(targetName==null||"".equals(targetName))	      targetName = file.getName();	FileInputStream fis = null;	try{		long now = System.currentTimeMillis();		//開始上傳文件		fis = new FileInputStream(file);		System.out.println(">>>開始上傳文件:"+file.getName());		Boolean ok = ftpClient.storeFile(targetName, fis);		if(ok){			//上傳成功			long times = System.currentTimeMillis() - now;			System.out.println(String.format(">>>上傳成功:大小:%s,上傳時間:%d秒", formatSize(file.length()),times/1000));		} else//上傳失敗		System.out.println(String.format(">>>上傳失?。捍笮。?s", formatSize(file.length())));	}	catch(IOException e){		System.err.println(String.format(">>>上傳失敗:大?。?s", formatSize(file.length())));		e.printStackTrace();		return false;	}	finally{		try{			if(fis!=null)			          fis.close();			close(ftpClient);		}		catch(Exception e){		}	}	return true;}

四、下載文件

/**   * 下載文件   * @param localPath 本地存放路徑   * @return   */public int download(String localPath){	// 連接ftp server	FTPClient ftpClient = connect();	if(ftpClient==null){		System.out.println("連接FTP服務器["+host+":"+port+"]失??!");		return 0;	}	File dir = new File(localPath);	if(!dir.exists())	      dir.mkdirs();	FTPFile[] ftpFiles = null;	try{		ftpFiles = ftpClient.listFiles();		if(ftpFiles==null||ftpFiles.length==0)		        return 0;	}	catch(IOException e){		return 0;	}	int c = 0;	for (int i=0;i<ftpFiles.length;i++){		FileOutputStream fos = null;		try{			String name = ftpFiles[i].getName();			fos = new FileOutputStream(new File(dir.getAbsolutePath()+File.separator+name));			System.out.println("<<<開始下載文件:"+name);			long now = System.currentTimeMillis();			Boolean ok = ftpClient.retrieveFile(new String(name.getBytes("UTF-8"),"ISO-8859-1"), fos);			if(ok){				//下載成功				long times = System.currentTimeMillis() - now;				System.out.println(String.format("<<<下載成功:大?。?s,上傳時間:%d秒", formatSize(ftpFiles[i].getSize()),times/1000));				c++;			} else{				System.out.println("<<<下載失敗");			}		}		catch(IOException e){			System.err.println("<<<下載失敗");			e.printStackTrace();		}		finally{			try{				if(fos!=null)				            fos.close();				close(ftpClient);			}			catch(Exception e){			}		}	}	return c;}

格式化文件大小

private static final DecimalFormat DF = new DecimalFormat("#.##");  /**   * 格式化文件大?。˙,KB,MB,GB)   * @param size   * @return   */  private String formatSize(long size){    if(size<1024){      return size + " B";    }else if(size<1024*1024){      return size/1024 + " KB";    }else if(size<1024*1024*1024){      return (size/(1024*1024)) + " MB";    }else{      double gb = size/(1024*1024*1024);      return DF.format(gb)+" GB";    }  }

五、測試

public static void main(String args[]){    FTPTest ftp = new FTPTest("192.168.1.10",21,null,null,"/temp/2016/12");    ftp.upload("newFile.rar", "D:/ftp/TeamViewerPortable.rar");    System.out.println("");    ftp.download("D:/ftp/");  }

結果

===連接到FTP:192.168.1.10:21>>>開始上傳文件:TeamViewerPortable.rar>>>上傳成功:大?。? MB,上傳時間:3秒!!!斷開FTP連接:192.168.1.10:21===連接到FTP:192.168.1.10:21<<<開始下載文件:newFile.rar<<<下載成功:大?。? MB,上傳時間:4秒!!!斷開FTP連接:192.168.1.10:21

總結

以上就是本文關于java使用Apache工具集實現ftp文件傳輸代碼詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国模在线视频| 亚洲a级在线播放观看| 欧洲精品在线视频| 日韩中文在线中文网在线观看| 色综合伊人色综合网站| 亚洲精品国产拍免费91在线| 中日韩美女免费视频网站在线观看| 成人高清视频观看www| 国产亚洲精品一区二区| 51午夜精品视频| 国产精品av免费在线观看| 欧美性开放视频| 成人福利网站在线观看| 久久久久成人精品| 中文字幕欧美视频在线| 538国产精品视频一区二区| 亚洲人成啪啪网站| 精品欧美激情精品一区| 国产日韩精品电影| 国产精品久久一| 最近2019中文免费高清视频观看www99| 国产欧美一区二区三区久久| 精品国产欧美一区二区五十路| 亚洲乱码av中文一区二区| 欧洲成人免费视频| 亚洲色图欧美制服丝袜另类第一页| 欧美激情在线视频二区| 久久久久久午夜| 国产美女搞久久| 亚洲wwwav| 亚洲视频在线看| 亚洲综合日韩在线| 亚洲精品久久久久久久久久久久| 国产免费亚洲高清| 欧美成人一区在线| www.日韩欧美| 国产精品久久久久久av福利| 国产一区二区美女视频| 中文日韩在线视频| 欧美电影免费播放| 亚洲国产精品电影在线观看| 97涩涩爰在线观看亚洲| 色诱女教师一区二区三区| 国产成人亚洲综合青青| 欧美日韩亚洲国产一区| 欧美性xxxxxxxxx| 日韩欧美成人区| 亚洲va男人天堂| 欧美视频裸体精品| 国产不卡av在线免费观看| 国产精品高潮呻吟久久av黑人| 91日本视频在线| 91av在线网站| 国产精品综合网站| 亚洲国产又黄又爽女人高潮的| 午夜精品久久久久久久白皮肤| 欧美大片大片在线播放| 日本韩国欧美精品大片卡二| 午夜精品国产精品大乳美女| 精品久久久视频| 日韩视频免费中文字幕| 亚洲片在线观看| 色哟哟亚洲精品一区二区| 亚洲精品视频中文字幕| 欧美大片免费看| 日本道色综合久久影院| 亚洲一区二区精品| 亚洲精品综合精品自拍| 久久久久免费精品国产| 国模极品一区二区三区| 久久久久日韩精品久久久男男| 国产美女精品视频| 国产精品成人一区二区三区吃奶| 亚洲xxx自由成熟| 国产精品视频免费在线| 欧美在线视频在线播放完整版免费观看| 91日韩在线播放| 日韩成人av一区| 亚洲人成电影在线观看天堂色| 亚洲精品videossex少妇| 欧美精品免费看| 日韩av影院在线观看| 国产手机视频精品| 日韩精品视频免费在线观看| 国内精品久久久久久久久| 久久99亚洲热视| 日本老师69xxx| 久久精品国产成人精品| 亚洲国产成人在线视频| 亚洲一区999| 不卡av电影院| 日韩av成人在线观看| 色视频www在线播放国产成人| 亚洲一区二区三区久久| 欧美日韩国产丝袜另类| 日韩精品中文字幕视频在线| 欧美精品一本久久男人的天堂| 亚洲人成在线观| 日韩经典中文字幕| 日韩成人av在线| 久久综合久久88| 欧美肥老太性生活视频| 日韩高清有码在线| 成人国产精品日本在线| 亚洲性av在线| 一区二区三欧美| 亚洲国产成人精品一区二区| 久久精品99无色码中文字幕| 超碰精品一区二区三区乱码| 亚洲片国产一区一级在线观看| 国产精品亚洲激情| 国产精品男人的天堂| 久久精品99国产精品酒店日本| 日韩av最新在线观看| 欧美老肥婆性猛交视频| 久久91精品国产91久久跳| 欧美精品一区在线播放| 久久久中精品2020中文| 97在线视频免费看| 中文字幕日韩av综合精品| 日本国产精品视频| 夜夜嗨av色一区二区不卡| 亚洲第一页自拍| 国产一区二区三区精品久久久| 中文字幕国产亚洲2019| 国产精品视频自拍| 热久久美女精品天天吊色| 成人黄色在线免费| 欧美一区二区三区……| 国产精品jvid在线观看蜜臀| 亚洲国产欧美一区二区三区同亚洲| 国产日产欧美a一级在线| 成人在线国产精品| 久久精品在线播放| 久久精品成人一区二区三区| www日韩中文字幕在线看| 欧美最顶级的aⅴ艳星| 欧美一区二区三区图| 国产亚洲日本欧美韩国| 亚洲国产日韩欧美在线99| 欧美制服第一页| 亚洲影院高清在线| 久久久免费精品视频| 欧美在线激情网| 国产在线观看精品一区二区三区| 日本久久久a级免费| 日韩av在线免费观看一区| 久久影院免费观看| 国产精品视频一区二区三区四| 国产男女猛烈无遮挡91| 亚洲欧美日韩天堂一区二区| 欧美性20hd另类| 成人福利视频网| www.美女亚洲精品| 一区二区三区美女xx视频| 欧美视频中文字幕在线| 久久久亚洲精品视频| 日韩中文在线观看| 蜜臀久久99精品久久久久久宅男| 国产综合视频在线观看| 日韩毛片中文字幕| 国产91成人video| 久久久久久久久中文字幕| 亚洲国产精品悠悠久久琪琪|