瑕佽繍琛宖tp4j library錛屼綘闇瑕丣ava 榪愯鏃剁幆澧僾. 1.4+.
灝唂tp4j JAR鏂囦歡娣誨姞鍒頒綘搴旂敤紼嬪簭鐨刢lasspath涓? 鐒跺悗浣犲氨鍙互鑷姩鍚敤ftp4j綾葷殑浣跨敤浜?
鍙弬鑰?/span>ftp4j javadocs.
鍖呬腑鐨勪富綾繪槸FTPClient (it.sauronsoftware.ftp4j.FTPClient).
鍒涘緩涓涓?/span>FTPClient 瀹炰緥錛?/p> 榪炴帴榪滅▼FTP鏈嶅姟: 濡傛灉鏈嶅姟绔彛涓嶆槸鏍囧噯鐨?1绔彛 (鎴?FTPS鐨?90绔彛)錛岄渶瑕佷嬌鐢╬ort鍙傛暟榪涜鎸囧畾: 濡? 鐒跺悗榪涜鐧誨綍嫻佺▼: 濡傛灉娌℃湁鎶涘嚭浠諱綍寮傚父鐨勮瘽錛岄偅涔堜綘灝遍氳繃榪滅▼鏈嶅姟鍣ㄧ殑璁よ瘉浜?鍚﹀垯錛屽鏋滈獙璇佸け璐ワ紝浣犲皢浼氭敹鍒?/span>it.sauronsoftware.ftp4j.FTPException寮傚父. 鍖垮悕璁よ瘉錛屽鏋滆榪炴帴鏈嶅姟璁ゅ彲鐨勮瘽錛?鍙氳繃鍙戦佺敤鎴峰悕"anonymous" 鍜屼換鎰忓瘑鐮佹潵瀹屾垚(娉ㄦ剰錛屾湁浜涙湇鍔″櫒闇瑕乪-mail鍦板潃鏉ヤ唬鏇垮瘑鐮?: 浣跨敤榪滅▼FTP鏈嶅姟鏉ュ仛浠諱綍浜嬫儏錛岀劧鍚庡啀鏂紑榪炴帴: 榪欎細鍚戣繙紼嬪櫒鍙戦丗TP QUIT鍛戒護, 浠ヨ繘琛屼竴涓悎娉曟柇寮嫻佺▼.濡傛灉浣犲彧鏄兂涓柇榪炴帴鑰屼笉鎯沖悜鏈嶅姟鍣ㄥ彂閫佷換浣曢氱煡錛岄偅涔堝彲浠ヤ嬌鐢? 瀹㈡埛绔氳繃榪炴帴鍣紙涓涓戶鎵胯嚜it.sauronsoftware.ftp4j.FTPConnector鐨勫璞?/em>錛夋潵榪炴帴鏈嶅姟鍣? 瀹冨皢榪斿洖涓涓凡緇忔墦寮鐨勮繛鎺?涓涓疄鐜頒簡it.sauronsoftware.ftp4j.FTPConnection 鎺ュ彛鐨勫璞?.榪欎篃鏄負浠涔坒tp4j 鍙互鏀寔澶ч噺浠g悊鐨勫師鍥? 鍦ㄨ繛鎺ヨ繙紼嬫湇鍔″櫒鍓嶏紝瀹㈡埛绔疄渚嬪彲浠ヤ嬌鐢╯etConnector() 鏂規(guī)硶鏉ヨ緗繛鎺ュ櫒: 濡傛灉娌℃湁璁劇疆榪炴帴鍣ㄧ殑璇濓紝浼氫嬌鐢ㄩ粯璁ょ殑榪炴帴鍣?/span>DirectConnector (it.sauronsoftware.ftp4j.connectors.DirectConnector), 瀹冨疄鐜頒簡瀵硅繙紼嬫湇鍔″櫒鐨勭洿鎺ヨ繛鎺ワ紝涓斾笉浼氫嬌鐢ㄤ唬鐞嗐?/p> 濡傛灉浣犲彧鑳介氳繃浠g悊鏉ヨ繛鎺ヨ繙紼嬫湇鍔″櫒, ftp4j鍖呭彲浠ヨ浣犲湪涓嬮潰鐨勮繛鎺ュ櫒涓繘琛岄夋嫨: 鍥犱負ftp4j鐨勮繛鎺ュ櫒鏋舵瀯璁捐涓哄彲鎻掓嫈鐨勶紝鍥犳浣犲彲浠ョ戶鎵?/span>FTPConnector 鎶借薄綾繪潵鏋勫緩鑷繁鐨勮繛鎺ュ櫒. ftp4j鍖呮敮鎸丗TPS (闅愬紡鍩轟簬 TLS/SSL鐨凢TP) 鍜孎TPES (鏄劇ず鍩轟簬TLS/SSL鐨凢TP). setSecurity() 鏂規(guī)硶鍙敤鏉ユ墦寮榪欑鐗規(guī)? 涓や釜鏂規(guī)硶閮介渶瑕佸湪榪炴帴榪滅▼鏈嶅姟鍣ㄥ墠璋冪敤. 濡傛灉瀹夊叏鍗忚璁劇疆鎴愪簡SECURITY_FTPS, 鍒?em>connect() 鏂規(guī)硶榛樿浣跨敤鐨勭鍙d負990. 榛樿鎯呭喌涓嬶紝瀹㈡埛绔璞″晢璁⊿SL榪炴帴浼氫嬌鐢?/span>javax.net.ssl.SSLSocketFactory.getDefault()浣滀負鍏跺鎺ュ瓧宸ュ巶.鍙氳繃璋冪敤client.setSSLSocketFactory()鏂規(guī)硶鏉ユ敼鍙橀粯璁ゅ鎺ュ瓧宸ュ巶. 鍙﹀涓縐?em style="background-color: inherit;">SSLSocketFactory, 鍙敤鏉ヤ俊浠昏繙紼嬫湇鍔″櫒棰佸彂鐨勮瘉涔?璋ㄦ厧浣跨敤): 鑾峰彇褰撳墠鐩綍鐨勭殑緇濆璺緞錛堟鐩綍鏄疐TP鏈嶅姟鍣ㄧ殑home鐩綍錛? 鏀瑰彉鐩綍: 浣犲彲浠ヤ嬌鐢ㄧ粷瀵硅礬寰勫拰鐩稿璺緞: 鍥炲埌鐖剁洰褰? 瑕侀噸鍛藉悕榪滅▼鏂囦歡鎴栫洰褰? rename() 鏂規(guī)硶涔熷彲浠ョ敤鏉ヤ粠褰撳墠浣嶇疆縐誨姩鏂囦歡鎴栫洰褰曞埌鍏跺畠浣嶇疆. 鍦ㄨ繖涓緥瀛愬瓙錛屽亣璁懼湪褰撳墠宸ヤ綔鐩綍涓紝浣犳湁涓涓悕涓?myfile.txt"鐨勬枃浠?鐒跺悗浣犳兂灝嗗叾縐誨姩鍒板瓙鐩綍"myfolder"涓? 瑕佸垹闄よ繙紼嬫枃浠訛紝闇瑕佽皟鐢? 鍦ㄨ繖涓緥瀛愪腑: 濡傛灉榪滅▼鏈嶅姟緇欎綘鏈轟細鐨勮瘽錛屼綘鍙互鍦ㄨ繙紼嬬珯鐐逛笂鍒涘緩鏂扮洰褰? 浣犱篃鍙互宸插瓨鍦ㄧ殑鐩綍: 鍦ㄨ繖涓緥瀛愪腑: 璇鋒敞鎰忥紝閫氬父鎯呭喌涓嬶紝FTP 鏈嶅姟鍣ㄥ彧鍏佽鍒犻櫎絀虹洰褰? FTP 鍗忚騫朵笉浼氭彁渚涘ぇ閲忔敮鎸佹柟娉曟潵鑾峰彇宸ヤ綔鐩綍鐨勫畬鏁翠俊鎭?閫氬父LIST鍛戒護浼氱粰浣犳兂鐭ラ亾鐨勪笢瑗匡紝浣嗕笉杈涚殑鏄紝姣忎釜鏈嶅姟鍣ㄤ細浣跨敤涓嶅悓鏍峰紡鐨勫搷搴? 榪欐剰鍛崇潃鏌愪簺鏈嶅姟鍣ㄤ細榪斿洖UNIX鏍峰紡鐨勭洰褰曪紝鏈変簺鏈嶅姟鍣ㄤ細榪斿洖DOS鏍峰紡鐨勭洰褰?鍏跺畠鐨勬湇鍔″櫒鍙堜細浣跨敤鍒殑鏍峰紡. ftp4j 鍖呭彲浠ュ鐞嗚澶氱殑LIST鍝嶅簲鏍煎紡, 騫跺皢瀹冧滑鏋勫緩鎴愮粺涓鐩綍鍐呭鐨勭粨鏋勫璞¤〃紺?/span>.褰撳墠ftp4j鍙互澶勭悊: 榪欏彲浠ラ氳繃浣跨敤鍙彃鎷旂殑parsers鏉ュ畬鎴?鍖?/span>it.sauronsoftware.ftp4j.listparsers鍖呭惈浜嗙敤浜庡鐞嗕笂榪版牱寮忕殑瀵硅薄.澶у鏁版椂闂達紝榪欎簺宸茬粡澶熺敤浜嗐?/p> 瑕佸垪鍑哄綋鍓嶅伐浣滅洰褰曚笅鐨勬枃浠舵垨鏂囦歡澶癸紝鍙皟鐢? 濡傛灉浣犳敹鍒頒簡FTPListParseException (it.sauronsoftware.ftp4j.FTPListParseException) 寮傚父錛岃繖灝辨剰鍛崇潃鏈嶅姟鍣ㄥLIST鍛戒護榪斿洖浜嗕笉鍙悊瑙g殑鏍峰紡,鍗沖畠涓嶆槸涓婅堪鍒楀嚭鐨勬牱寮?鍥犳錛屼綘鍙互灝濊瘯浣跨敤listNames() 鏂規(guī)硶錛?浣嗗畠騫朵笉濡?em style="background-color: inherit;">list()鏂規(guī)硶鏈変紭鍔?/em>.銆備負浜嗗譏琛ヨ繖縐嶇己闄鳳紝浣犲彲浠ユ瀯寤轟綘鑷繁鐨?span style="line-height: 1.5; background-color: inherit;">LIST鍝嶅簲瑙f瀽鍣?浠ユ敮鎸佷綘閬囧埌鐨勬牱寮?浣犲彲浠ュ疄鐜?/span>FTPListParser (it.sauronsoftware.ftp4j.FTPListParser) 鎺ュ彛錛岀劧鍚庝綘鍙互鍦╟lient鐨?/span>addListParser()鏂規(guī)硶浣跨敤姝ゅ疄鐜?/em>. FTPFile (it.sauronsoftware.ftp4j.FTPFile) 瀵硅薄鎻愪緵浜嗙洰褰曞唴瀹圭殑琛ㄧず錛屽寘鎷枃浠訛紝瀛愮洰褰曞拰榪炴帴. 鏍規(guī)嵁鏈嶅姟鍣ㄧ殑鍝嶅簲錛孎TPFile瀵硅薄鐨勬煇浜涘瓧孌靛彲浠ユ槸null 鐨勬垨鑰呮槸鏃犳剰涔夌殑.璇鋒鏌avadocs鏉ヤ簡瑙g粏鑺? 鍦?/span>list() 鏂規(guī)硶涓綘涔熷彲浠ヤ嬌鐢ㄦ枃浠惰繃婊ゅ弬鏁?濡傦細 濡傛灉榪炴帴鏈嶅姟鍣ㄦ槑紜敮鎸丮LSD鍛戒護, ftp4j浼氱敤鍏舵潵浠f浛鍩烘湰鐨凩IST鍛戒護銆侻LSD鐨勫搷搴斾簨瀹炴洿涓烘爣鍑嗭紝鍑嗙‘錛屾洿鏄撹В鏋?涓嶅垢鐨勬槸錛屼笉鏄墍鏈夋湇鍔″櫒閮芥敮鎸佽繖涓懡浠わ紝騫朵笖鏈変簺鏈嶅姟鍣ㄦ敮鎸佸緱闈炲父緋熺硶.鍩轟簬榪欎簺鐞嗙敱錛屽紑鍙戣呭彲浠ユ帶鍒秄tp4j鏄惁搴旇浣跨敤MLSD鍛戒護錛屽嵆閫氳繃璋冪敤FTPClient瀵硅薄鐨?/em>setMLSDPolicy()鏂規(guī)硶. 鍚堟硶鐨勫? FTPClient.MLSD_IF_SUPPORTED FTPClient.MLSD_ALWAYS FTPClient.MLSD_NEVER 渚嬪錛?/span> 閫氬父鎯呭喌涓?/span>FTPFile瀵硅薄浼氬憡璇変綘鏉$洰鐨勬渶鍚庝慨鏀規(guī)椂闂?/em>, 浣嗘濡備笂闈㈡弿榪扮殑錛岃繖渚濊禆浜庢湇鍔″櫒鍙戝洖鐨勫搷搴?濡傛灉浣犻渶瑕佹渶鍚庣殑淇敼鏃墮棿錛屼絾浣犲張涓嶈兘閫氳繃list()鏂規(guī)硶寰楀埌錛岄偅涔堝彲浠ュ皾璇曡繖鏍峰仛錛?/p> 涓嬭澆榪滅▼鏂囦歡鏈綆鍗曠殑鏂瑰紡鏄皟鐢?/span>download(String, File) 鏂規(guī)硶錛?/p> 瑕佷笂浼? 瑕佸湪宸叉湁鏂囦歡涓笂浼犺拷鍔犲唴瀹? 榪欎簺鏄樆濉炲紡璋冪敤:瀹冧滑浼氬湪浼犺緭瀹屾垚鍚?鎴杅ailed, 鎴?aborted鏃?鎵嶈繑鍥? 姝ゅ鍚屾閿佹槸鍚︾敱瀹㈡埛绔潵瀹炴柦鐨勶紝鍥犱負鍦ㄦ瘡涓椂闂存鍐呭彧鍏佽鏈変竴涓父瑙勭殑FTP閫氫俊.鍦ㄦ瘡涓椂闂存鍐咃紝浣犲彲浠ュ鐞嗗涓紶杈撳櫒錛屽嵆浣跨敤澶氫釜FTPClient 瀵硅薄,姣忎釜閮戒笌鏈嶅姟鍣ㄥ緩绔嬩竴涓鏈夎繛鎺? 浣犲彲浠ヤ嬌鐢?/span>FTPDataTransferListener (it.sauronsoftware.ftp4j.FTPDataTransferListener)瀵硅薄鏉ョ洃鎺т紶杈?浣犲彲浠ヨ嚜宸卞疄鐜頒竴涓? 鐜板湪鍍忎笅闈㈣繖鏍鋒潵涓嬭澆鎴栦笂浼? 褰揷lient澶勭悊涓嬭澆鎴栦笂浼犳椂錛屼紶杈撳櫒鍙互琚悓涓涓?/span>FTPClient瀵硅薄鐨勪笉鍚岀嚎紼嬮氳繃璋冪敤 abortCurrentDataTransfer() 鏂規(guī)硶aborted. 姝ゆ柟娉曡繕闇瑕佷竴涓猙oolean鍙傛暟:true琛ㄧず鎵ц鍚堟硶鐨?/em>abort榪囩▼(鍗沖悜鏈嶅姟鍣ㄥ彂閫丄BOR鍛戒護), false琛ㄧず瀹炵劧鍏抽棴浼犺緭鍣紝鑰屼笉鍚戞湇鍔″櫒鍙戦侀氱煡: 闇瑕佹敞鎰忕殑鏄紝list()鍜?/em>listNames() 鏂規(guī)硶鏆椾腑鍖呭惈浜嗘暟鎹紶杈撳櫒錛屽洜abortCurrentDataTransfer() 鏂規(guī)硶涔熷彲浠ョ敤鏉ヤ腑鏂叾list榪囩▼. 褰撴暟鎹紶杈撳櫒鍦?/span>download(), upload(), append(), list() and listNames() 鏂規(guī)硶涓腑鏂椂錛屽皢浼氭姏鍑?em style="background-color: inherit;">FTPAbortedException 涓嬭澆鍜屼笂浼犳搷浣滃彲閫氳繃restartAt 鍙傛暟鏉ラ噸鏂版仮澶? 姝ゆ搷浣滀細鏂囦歡鐨勭1056涓瓧鑺傚緇х畫鎵ц涓嬭澆鎿嶄綔銆傜涓涓紶杈撶殑瀛楄妭灝嗘槸絎?057涓? 鍏跺畠 download(), upload() 鍜?em style="background-color: inherit;">append()鏂規(guī)硶鐨勫彉縐嶅彲浠ヨ浣犱嬌鐢ㄦ祦鏉ユ浛浠?/em>java.io.File瀵硅薄.鍥犳浣犲彲浠ュ湪鏁版嵁搴擄紝緗戠粶榪炴帴鎴栧叾瀹冩祦涓婃潵浼犺緭鏁版嵁銆?/p> 瀹㈡埛绔拰鏈嶅姟鍣ㄤ箣闂寸殑鏁版嵁浼犺緭閫氶亾鏄氳繃鍗曠嫭鐨勭綉緇滆繛鎺ユ潵寤虹珛鐨? 鍦ㄤ紶杈撻氶亾寤虹珛鏈熼棿錛屾湇鍔″櫒鍙互鏄?/span>active鎴?/em>passive鐨?/em>. 鏈嶅姟鍣ㄦ縺媧繪暟鎹紶杈撴椂錛屽伐浣滃涓嬶細 active妯″紡闇瑕佷綘鐨刢lient鑳藉鏀跺埌鏉ヨ嚜鏈嶅姟鍣ㄧ殑榪炴帴.濡傛灉浣犵殑client澶勪簬闃茬伀澧欙紝 浠g悊鎴栬繖涓よ呮販鍚堜箣鍚庯紝閭d箞澶ч儴鍒嗘椂闂撮兘浼氬嚭鐜伴棶棰橈紝鍥犱負瀹冧笉鑳芥敹鍒版潵澶栫晫鐨勮繛鎺? 涓嬮潰鏄?/span>passive鏁版嵁浼犺緭妯″紡錛?/p> 鍦╬assive妯″紡涓紝瀹㈡埛绔繛鎺ヤ笉瑕佹眰鑳芥敹鍒版湇鍔″櫒鐨勮繛鎺ヨ姹? 鍦╢tp4j涓紝浣犲彲浠ヤ嬌鐢ㄤ笅闈㈢殑璋冪敤鏉ュ垏鎹ctive銆乸assive妯″紡: ftp4j client passive 鏍囧織鐨勯粯璁ゅ間負true: 濡傛灉浣犳病鏈夎皟鐢?em style="background-color: inherit;">setPassive(false) 錛屼綘鐨勫鎴風鍦ㄦ瘡嬈′紶杈撳墠錛岄兘浼氬悜鏈嶅姟鍣ㄨ姹俻assive妯″紡. 褰撲嬌鐢?passive鏂囦歡浼犺緭鏃訛紝鏈嶅姟鍣ㄤ細鎻愪緵涓涓?IP鍦板潃鍜屼竴涓鍙e彿.浣滀負FTP瑙勮寖鐨刢lient,闇瑕佷嬌鐢ㄧ粰瀹氱殑涓繪満鍙峰拰绔彛榪涜榪炴帴.鍦ㄥ晢涓氱幆澧冧腑錛岃繖縐嶈涓哄彲鑳戒細緇忓父甯︽潵闂錛屽洜涓篘AT閰嶇疆鍙兘浼氶樆姝㈠IP鍦板潃鐨勮繛鎺?榪欏氨鏄負浠涔團TP clients閫氬父浼氬拷鐣ユ湇鍔″櫒榪斿洖鐨勪換浣旾P鍦板潃錛岃繘鑰屽湪閫氫俊綰胯礬涓嬌鐢ㄥ悓鏍風殑涓繪満鏉ヨ繛鎺ユ湇鍔″櫒.ftp4j鐨勮涓轟緷璧栦簬鏈嶅姟鍣ㄥ洜绱? 鍦╝ctive浼犺緭妯″紡涓紝鍙互璁劇疆涓嬮潰鐨勭郴緇熷睘鎬? ftp4j.activeDataTransfer.hostAddress ftp4j.activeDataTransfer.portRange ftp4j.activeDataTransfer.acceptTimeout 瑕佽緗郴緇熷睘鎬э紝浣犲彲浠? 鐢ㄤ竴涓垨澶氫釜 -Dproperty=value鍙傛暟鏉ュ惎鍔↗VM.濡? 鐩存帴鍦ㄤ唬鐮佷腑璁劇疆緋葷粺灞炴э紝濡? 浣犲彲浠ヨ皟鐢ㄤ笅闈㈢殑鏂規(guī)硶閫夋嫨浣犱紶杈撶殑綾誨瀷: 榛樿鐨凾YPE_AUTO甯擱噺 ,浼氳client鑷姩鏉ユ寫閫夌被鍨?濡傛灉鏂囦歡鐨勬墿灞曞悕鏄痗lient鑳借璇嗗埆鐨勬枃鏈被鍨嬫爣璁幫紝閭d箞瀹冧細閫夋嫨鏂囨湰浼犺緭鍣ㄦ潵鎵ц. 鏂囦歡鎵╁睍鍚嶆槸閫氳繃FTPTextualExtensionRecognizer (it.sauronsoftware.ftp4j.FTPTextualExtensionRecognizer) 瀹炰緥鏉ヨ瘑鍒殑. 榛樿鎵╁睍璇嗗埆鍣ㄦ槸it.sauronsoftware.ftp4j.recognizers.DefaultTextualExtensionRecognizer, 浼氬皢涓嬮潰鐨勮涓烘枃鏈被鍨? 浣犲彲閫氳繃瀹炵幇FTPTextualExtensionRecognizer 鎺ュ彛鏉ュ疄鐜頒綘鑷繁鐨勮瘑鍒櫒錛屼絾浣犲彲浠ユ洿鍠滄浣跨敤 class ParametricTextualExtensionRecognizer(it.sauronsoftware.ftp4j.recognizers.ParametricTextualExtensionRecognizer)渚垮埄綾? 鏈変簺鏈嶅姟鍣ㄦ敮鎸佹暟鎹紶杈撳帇緙╃壒鎬э紞MODE Z. 鍦ㄤ紶杈撳ぇ鏂囦歡鏃訛紝姝ょ壒鎬у彲浠ヨ妭鐪佸甫瀹?涓鏃lient榪炰笂鏈嶅姟鍣ㄥ茍閫氳繃璁よ瘉,灝卞彲閫氳繃璋冪敤涓嬮潰鐨勬柟娉曟潵媯鏌ユ槸鍚︽敮鎸佸帇緙╋細 濡傛灉鏈嶅姟鍣ㄧ鏀寔鍘嬬緝,灝卞彲閫氳繃涓嬮潰鐨勮皟鐢ㄦ潵鍚敤鍘嬬緝: 鍦ㄦ璋冪敤涔嬪悗錛屽悗緇殑鏁版嵁浼犺緭(涓嬭澆錛屼笂浼狅紝鍒椾婦鎿嶄綔錛夐兘琚皢鍘嬬緝浠ヨ妭鐪佸甫瀹? 鏁版嵁浼犺緭鍘嬬緝鍙氳繃涓嬮潰鐨勮皟鐢ㄦ潵紱佺敤: 涔熷彲浠ユ鏌ユ爣璁板? 璇鋒敞鎰忥細鍘嬬緝鏁版嵁浼犺緭鍙綋鍘嬬緝鏀寔涓斿惎鐢ㄤ簡鐨勬儏鍐典笅鎵嶄細鍙戠敓. 榛樿鎯呭喌涓嬶紝鍘嬬緝鏄鐢ㄧ殑錛屽嵆渚挎槸鏈嶅姟鍣ㄦ敮鎸佸帇緙? 濡傛灉鏈夐渶瑕?鍙互鏄劇ず鍦版墦寮. 鍋囪浣犵殑client浠涔堜簨鎯呴兘涓嶅仛錛屽洜涓哄湪絳夊緟鐢ㄦ埛杈撳叆. 閫氬父鎯呭喌涓嬶紝 FTP鏈嶅姟鍣ㄤ細鑷姩鏂紑闈炴椿璺冨鎴風. 涓轟簡閬垮厤瓚呮椂錛屼綘鍙互鍙戦丯OOP鍛戒護. 褰撻潪媧昏穬瓚呮椂鍙戠敓鏃訛紝瀹㈡埛绔篃鍙互鑷姩鍙戦丯OOPs. 榛樿鎯呭喌涓嬶紝姝ょ壒鎬ф槸紱佺敤鐨勩傚畠鍙互鍦?nbsp;setAutoNoopTimeout() 鏂規(guī)硶涓緗秴鏃舵椂闂存椂鍚敤,騫舵彁渚涗竴涓縐掍負鍗曚綅鐨勫?濡? 浣跨敤姝ゅ鹼紝client浼氬湪30縐掑悗鍙戦佷竴涓狽OOP鍛戒護. NOOP瓚呮椂鍙氳繃璁劇疆灝忎簬絳変簬0鐨勫兼潵紱佺敤: 浣犲彲浠ュ儚涓嬮潰榪欐牱鏉ュ彂閫佺珯鐐圭壒孌婂懡浠わ細 浣犱篃鍙互鍙戦佽嚜瀹氫箟鍛戒護: sendSiteCommand() 鍜?nbsp;sendCustomCommand() 閮戒細榪斿洖涓涓?em style="background-color: inherit;">FTPReply (it.sauronsoftware.ftp4j.FTPReply)瀵硅薄.浣跨敤姝ゅ璞★紝浣犲彲浠ユ鏌ユ湇鍔″櫒鐨勫搷搴斾唬鐮佸拰娑堟伅. ftp4j 鍖呭畾涔変簡浜旂綾誨瀷鐨勫紓甯?FTPClient client = new FTPClient();
client.connect("ftp.host.com");
client.connect("ftp.host.com", port);
client.connect("ftp.host.com", 8021);
client.login("carlo", "mypassword");
client.login("anonymous", "ftp4j");
client.disconnect(true);
client.disconnect(false);
浣跨敤浠g悊榪涜榪炴帴
client.setConnector(anyConnectorYouWant);
瀹冨彲浠ラ氳繃HTTP浠g悊鏉ヨ繘琛岃繛鎺ワ紝騫舵敮鎸丆ONNECT鏂規(guī)硶.
瀹冨彲浠ラ氳繃FTP浠g悊榪涜榪炴帴,鏀寔SITE鍜孫PEN鍛戒護椋庢牸鐨勮嫑鍒昏繙紼嬩富鏈鴻繛鎺?鍏跺畠綾誨瀷鐨凢TP浠g悊,闇瑕?em style="background-color: inherit;">username@remotehost 璁よ瘉錛屼笖鍙互涓嶄嬌鐢ㄨ繛鎺ュ櫒錛屽洜涓哄畠浠浜庡鎴風鏉ヨ鏄忔槑鐨勩?/li>
瀹冨彲浠ラ氳繃SOCKS 4/4a浠g悊榪涜榪炴帴.
瀹冨彲浠ラ氳繃SOCKS 5浠g悊榪涜榪炴帴.FTPS/FTPES 瀹夊叏榪炴帴
client.setSecurity(FTPClient.SECURITY_FTPS); // 鍚敤 FTPS
client.setSecurity(FTPClient.SECURITY_FTPES); // 鍚敤 FTPES
import it.sauronsoftware.ftp4j.FTPClient;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
// ... TrustManager[] trustManager = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
public void checkServerTrusted(X509Certificate[] certs, String authType) { } } };
SSLContext sslContext = null;
try { sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManager, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
FTPClient client = new FTPClient();
client.setSSLSocketFactory(sslSocketFactory);
client.setSecurity(FTPClient.SECURITY_FTPS);
// or client.setSecurity(FTPClient.SECURITY_FTPES); // ...嫻忚榪滅▼绔欑偣
String dir = client.currentDirectory();
client.changeDirectory(newPath);
client.changeDirectory("/an/absolute/one");
client.changeDirectory("relative");client.changeDirectoryUp();
閲嶅懡鍚嶆枃浠跺拰鐩綍
client.rename("oldname", "newname");
縐誨姩鏂囦歡鍜屾枃浠跺
client.rename("myfile.txt", "myfolder/myfile.txt");
鍒犻櫎鏂囦歡
client.deleteFile(relativeOrAbsolutePath);
client.deleteFile("useless.txt");
鍒涘緩銆佸垹闄ょ洰褰?/span>
client.createDirectory("newfolder");
client.deleteDirectory(absoluteOrRelativePath);
client.deleteDirectory("oldfolder");
鍒楀嚭鏂囦歡銆佺洰褰曘佽繛鎺?/span>
FTPFile[] list = client.list();
FTPFile[] list = client.list("*.jpg");
client鍙湪鏈嶅姟鍣ㄦ槑紜敮鎸丮LSD鍛戒護鏃訛紝鎵嶄嬌鐢∕LSD鍛戒護. 榪欐槸ftp4j榛樿鐨勮涓?
client鎬繪槸浼氫嬌鐢∕LSD鍛戒護, 鍗充究鏈嶅姟鍣ㄦ病鏈夋槑紜〃鏄庢敮鎸丮LSD鍛戒護.
client緇濅笉浣跨敤MLSD鍛戒護,鍗充究鏈嶅姟鍣ㄦ槑紜〃鏄庢敮鎸丮LSD鍛戒護.client.setMLSDPolicy(FTPClient.MLSD_NEVER);
鑾峰彇鏂囦歡銆佺洰褰曠殑鏈鍚庝慨鏀規(guī)椂闂?/span>
java.util.Date md = client.modifiedDate("filename.ext");
涓嬭澆銆佷笂浼犳枃浠?/span>
client.download("remoteFile.ext", new java.io.File("localFile.ext"));
client.upload(new java.io.File("localFile.ext"));
client.append(new java.io.File("localFile.ext"));
import it.sauronsoftware.ftp4j.FTPDataTransferListener;
public class MyTransferListener implements FTPDataTransferListener {
public void started() {
// Transfer started
}
public void transferred(int length) {
// Yet other length bytes has been transferred since the last time this
// method was called
}
public void completed() {
// Transfer completed
}
public void aborted() {
// Transfer aborted
}
public void failed() {
// Transfer failed
}
}client.download("remoteFile.ext", new java.io.File("localFile.ext"), new MyTransferListener());
client.upload(new java.io.File("localFile.ext"), new MyTransferListener());
client.append(new java.io.File("localFile.ext"), new MyTransferListener());
client.abortCurrentDataTransfer(true); // Sends ABOR
client.abortCurrentDataTransfer(false); // Breaks abruptly
client.download("remoteFile.ext", new java.io.File("localFile.ext"), 1056);
Active 銆?passive 鏁版嵁浼犺緭妯″紡
client.setPassive(false); // Active mode
client.setPassive(true); // Passive mode
涓繪満鍦板潃.褰撴湇鍔″櫒璇鋒眰鎵ц涓庡鎴風榪炴帴鏃訛紝client浼氳煩杞埌緇欏畾鍦板潃鐨勬湇鍔″櫒. 姝ゅ煎簲璇ユ槸涓涓湁鏁堢殑IPv4鍦板潃錛屽錛?em style="background-color: inherit;">178.12.34.167. 濡傛灉娌℃湁鎻愪緵姝ゅ鹼紝瀹㈡埛绔細鑷姩瑙f瀽緋葷粺鍦板潃.浣嗗鏋渃lient榪愯浜嶭AN涓紝涓轟簡嬋媧繪暟鎹紶杈擄紝灝嗕細浣跨敤甯︾鍙h漿鍙戠殑璺敱鍣ㄦ潵榪炴帴澶栭儴鏈嶅姟鍣?閭d箞鑷姩鎺㈡祴鍒扮殑鍦板潃鍙兘涓嶆槸姝g‘鐨? 褰撶郴緇熸湁澶氫釜緗戠粶鎺ュ彛鏃訛紝涔熷彲鑳藉彂鐢熻繖縐嶆儏鍐?閫氬父浣跨敤緋葷粺灞炴э紝鍙互瑙e喅榪欑闂
榪炴帴绔彛鑼冨洿. client浼氬湪鍏朵腑鎸戦変竴涓潵榪涜鏁版嵁浼犺緭.姝ゅ?蹇呴』鏄?em style="background-color: inherit;">start-stop 褰㈠紡 錛屽6000-7000 琛ㄧずclient鍙細鍦ㄧ粰瀹氳寖鍥村唴鎸戦変竴涓鍙f潵榪炴帴鏈嶅姟鍣?榛樿鎯呭喌涓嬫病鏈夋寚瀹氱鍙h寖鍥?榪欒〃紺篶lient浼氭寫閫変換浣曚竴涓彲鐢ㄧ殑绔彛.
浠ユ縐掍負鍗曚綅鐨勮繛鎺ヨ秴鏃舵椂闂? 濡傛灉鏈嶅姟鍣ㄤ笉鑳藉湪緇欏畾瓚呮椂鏃墮棿鍐呰繛鎺lient錛屼紶杈撲細鍥?em style="background-color: inherit;">FTPDataTransferException寮傚父鑰屼腑鏂?/em>.0鍊艱〃紺烘案涓嶈秴鏃躲傞粯璁ゅ?0000 (鍗?0縐?.java -Dftp4j.activeDataTransfer.hostAddress=178.12.34.167 -Dftp4j.activeDataTransfer.portRange=6000-7000 -Dftp4j.activeDataTransfer.acceptTimeout=5000 MyClass
System.setProperty("ftp4j.activeDataTransfer.hostAddress", "178.12.34.167");
System.setProperty("ftp4j.activeDataTransfer.portRange", "6000-7000");
System.setProperty("ftp4j.activeDataTransfer.acceptTimeout", "5000");浜岃繘鍒跺拰鏂囨湰鏁版嵁浼犺緭綾誨瀷
鏁版嵁浼犺緭鐨勫彟涓涓牳蹇冩蹇墊槸binary 鍜?/span>textual 綾誨瀷.褰撲紶浼犺緭鐨勬枃浠舵槸浜岃繘鍒舵枃浠舵椂錛屽畠?yōu)畣瑙嗕皋Z簩榪涘埗嫻侊紝鏈嶅姟鍣ㄤ細鎸夊師鏍峰瓨鍌ㄣ傝屾枃鏈暟鎹紶杈撲細灝嗕紶杈撶殑鏂囦歡瑙嗕負瀛楃嫻?浼氳繘琛屽瓧絎﹂泦杞崲. 鍋囪浣犵殑client姝h繍琛學(xué)indows騫沖彴涓婏紝鑰屾湇鍔″櫒榪愯UNIX涓?瀹冧滑鐨勯粯璁ゅ瓧絎﹂泦閫氬父鏄笉鍚岀殑. client浠ユ枃鏈被鍨嬫潵鍙戦佹枃浠舵椂錛宑lient浼氬亣璁炬枃浠舵槸鎸夋満鍣ㄦ爣鍑嗗瓧絎﹂泦鏉ョ紪鐮佺殑錛屽洜姝ゅ湪鍙戦佸墠錛屽畠浼氳В鐮佹瘡涓瓧絎﹀茍灝嗗叾緙栫爜涓?涓棿瀛楃闆? 鏈嶅姟鍣ㄦ敹鍒版祦鍚庯紝鍦ㄥ瓨鍌ㄥ墠錛屼細瑙g爜涓棿瀛楃闆嗭紝騫跺皢鍏剁紪鐮佷負鏈哄櫒榛樿鐨勫瓧絎﹂泦.瀛楄妭铏界劧琚敼鍙樹簡錛屼絾鍐呭鏄浉鍚岀殑銆?/span>
client.setType(FTPClient.TYPE_TEXTUAL);
client.setType(FTPClient.TYPE_BINARY);
client.setType(FTPClient.TYPE_AUTO);
abc acgi aip asm asp c c cc cc com conf cpp
csh css cxx def el etx f f f77 f90 f90 flx
for for g h h hh hh hlb htc htm html htmls
htt htx idc jav jav java java js ksh list
log lsp lst lsx m m mar mcf p pas php pl pl
pm py rexx rt rt rtf rtx s scm scm sdml sgm
sgm sgml sgml sh shtml shtml spc ssi talk
tcl tcsh text tsv txt uil uni unis uri uris
uu uue vcs wml wmls wsc xml zsh
鏃犺濡備綍錛岄兘涓嶈蹇樿灝嗕綘鐨勮瘑鍒櫒璁劇疆鍦╟lient涓?client.setTextualExtensionRecognizer(myRecognizer);
鏁版嵁浼犺緭鍘嬬緝
boolean compressionSupported = client.isCompressionSupported();
client.setCompressionEnabled(true);
client.setCompressionEnabled(false);
boolean compressionEnabled = client.isCompressionEnabled();
涓嶅仛浠諱綍浜嬶紙NOOPing the server錛?/span>
姝ゅ懡浠や笉浼氬仛浠諱綍浜嬫儏錛屼絾瀹冧細鍚戞湇鍔″櫒璇存槑錛氬鎴風浠嶇劧榪樻椿鐫錛岃閲嶅洿瓚呮椂璁℃暟鍣?璋冪敤濡備笅:client.noop();
client.setAutoNoopTimeout(30000);
client.setAutoNoopTimeout(0);
緗戠珯鐗規(guī)畩鐨勮嚜瀹氫箟鍛戒護
FTPReply reply = client.sendSiteCommand("YOUR COMMAND");
FTPReply reply = client.sendCustomCommand("YOUR COMMAND");
FTPCodes (it.sauronsoftware.ftp4j.FTPCodes) 鎺ュ彛鎶ュ憡浜嗕竴浜涢氱敤鐨凢TP鍝嶅簲浠g爜,鍥犳浣犲彲浠ヤ嬌鐢ㄨ繖浜涘寘涓殑鏌愪釜鏉ヨ繘琛屽尮閰?寮傚父澶勭悊
渚濊禆浜庢柟娉曪紝榪欎細鎶ュ憡鎶涘嚭浜嗕竴涓狥TP鏁呴殰.浣犲彲浠ユ鏌ユ姤鍛婄殑閿欒鐮侊紝浣跨敤FTPCodes 甯擱噺鏉ヨ幏鍙栨晠闅滃師鍥犵殑璇︾粏淇℃伅.
榪欒〃紺鴻繙紼嬫湇鍔″櫒浣跨敤闈炴硶鏂瑰紡榪涜浜嗗簲絳? 榪欎笌FTP鏄笉鍏煎鐨? 榪欏簲璇ユ槸闈炲父緗曡鐨?
榪欓氬父鍙戠敓鍦?em style="background-color: inherit;">list()鏂規(guī)硶錛屽鏋滄湇鍔″櫒鍙戝洖鐨勫搷搴斾笉鑳借瀹㈡埛绔寘涓幇鏈夎В鏋愬櫒榪涜鐨勮瘽錛屽氨浼氭姏鍑烘縐嶅紓甯?/em>
褰撴暟鎹紶杈?(download, upload, but also list and listNames) 鍥犵綉緇滆繛鎺ラ敊璇け璐ユ椂錛屽氨浼氭姏鍑烘縐嶅紓甯?
褰撴暟鎹紶杈?(download, upload, but also list and listNames) 鍥犲鎴風鍙戝嚭涓柇璇鋒眰澶辮觸鏃訛紝鎶涘嚭鐨勫紓甯?