org.apache.commons.net.ftp
ÀàFTPClient
java.lang.Object¼Ì³Ð
org.apache.commons.net.SocketClient org.apache.commons.net.ftp.FTP
org.apache.commons.net.ftp.FTPClient ËùÓÐÒÑʵÏֵĽӿڣº
¿ÉÅäÖà ֱ½ÓÒÑÖª×ÓÀࣺ
FTPHTTPClient £¬ FTPSClient
¹«¹²ÀàFTPClient ÑÓÉìµÄFTP ʵÏÖÁË¿ÉÅäÖÃ
FTPClient·â×°ÁËËùÓбØÒªµÄ¹¦ÄÜÀ´´æ´¢ºÍ¼ìË÷´ÓFTP·þÎñÆ÷ÉϵÄÎļþ¡£ Õâ¸öÀฺÔðËùÓÐÓëFTP·þÎñÆ÷½»»¥µÄµ×²ãϸ½Ú£¬²¢ÌṩÁ˱ã½ÝµÄ¸ü¸ß²ã´ÎµÄ½Ó¿Ú¡£ ÕýÈçÀ´×ÔËùÓÐÀàSocketClient £¬Äú±ØÐëÊ×ÏÈÁ¬½Óµ½Óë·þÎñÆ÷connect×öÈκÎÊÂ֮ǰ£¬×îºódisconnectÍê³Éºó£¬ÄãÍêÈ«Óë·þÎñÆ÷½»»¥¡£ È»ºó£¬ÄãÐèÒª¼ì²éµÄFTP´ð¸´´úÂ룬¿´¿´ÊÇ·ñÁ¬½Ó³É¹¦¡£ ÀýÈ磺
²¼¶û´íÎó= 0; ³¢ÊÔ{
Ú¹ÊÍ´ð¸´;
ftp.connect£¨¡°ftp.foobar.com¡±£©;
System.out.println£¨¡°Á¬½Óµ½¡±+·þÎñÆ÷+ \ System.out.print£¨ftp.getReplyString£¨£©£©;
/ /Á¬½Ó³¢ÊÔºó£¬ÄãÓ¦¸Ã¼ì²é´úÂëÒÔÑéÖ¤´ð¸´ / /³É¹¦¡£
´ð¸´= ftp.getReplyCode£¨£©;
Èç¹û£¨£¡FTPReply.isPositiveCompletion£¨»Ø¸´£©£©{ ftp.disconnect£¨£©;
System.err.println£¨¡°FTP·þÎñÆ÷¾Ü¾øÁ¬½Ó¡£¡±£©; System.exit£¨1£©; }
... / /´«ËÍÎļþ ftp.logout£¨£©;
}²¶×½£¨IOExceptionÒì³£Î壩{ Îó²îÎªÕæ;
e.printStackTrace£¨£©; ×îºó} {
Èç¹û£¨ftp.isConnected£¨£©£©{ ³¢ÊÔ{
ftp.disconnect£¨£©;
}²¶×½£¨IOExceptionÒì³£¹ÍÖ÷×éÖ¯£©{ / /ʲôҲ²»×ö } }
System.exit£¨´íÎó1£º0£¿£©; }
Á¬½ÓºóÁ¢¼´ÊÇÎ¨Ò»ÕæÕýµÄʱºòÄãÐèÒª¼ì²é´ð¸´´úÂ루ÒòΪÊÇÁ¬½ÓÀàÐÍΪvoid£©¡£ ¶ÔÓÚËùÓеÄFTP FTPClientÖ¸»Ó·½·¨µÄ¹«Ô¼¾ÍÊÇÕâÑù£¬ËûÃÇҪô·µ»ØÒ»¸ö²¼¶ûÖµ»òÆäËûÖµ¡£ ¸Ã·½·¨·µ»ØÒ»¸ö²¼¶û´ÓFTP·þÎñÆ÷³É¹¦Íê³É´ð±ç£¬¼Ù¼ÙÕæÕæµÄ´íÎóÌõ¼þÖеÄÒ»¸ö»ò¹ÊÕ϶øµ¼ÖµĴ𸴡£ ¸Ã·½·¨·µ»ØÒ»¸ö²¼¶ûÖµ·µ»ØÖµ±Èº¬ÓнϸßˮƽµÄFTPÃüÁ»òÕßΪnull£¬Èç¹û²úÉúÒ»¸ö´íÎóÌõ¼þ´ð¸´»ò¹ÊÕϵ¼ÖÂÆäËûÊý¾Ý¡£ Èç¹ûÄúÒª·ÃÎʵÄFTPµÄÈ·Çд𸴴úÂëµ¼Ö³ɹ¦»òʧ°Ü£¬Äã±ØÐëµ÷ÓÃgetReplyCodeºó£¬³É¹¦»òʧ°Ü¡£
FTPClientµÄĬÈÏÉèÖÃÊÇËüʹÓÃFTP.ASCII_FILE_TYPE £¬ FTP.NON_PRINT_TEXT_FORMAT £¬ FTP.STREAM_TRANSFER_MODEºÍ
FTP.FILE_STRUCTURE ¡£ ΨһµÄÎļþÖ±½ÓÖ§³ÖµÄÀàÐÍÊÇFTP.ASCII_FILE_TYPEºÍFTP.BINARY_FILE_TYPE ¡£ ÒòΪÖÁÉÙÓÐ4ÖÖ²»Í¬µÄEBCDIC±àÂ룬ÎÒÃÇ»¹Ñ¡ÔñÁ˲»Ìṩֱ½ÓÖ§³ÖµÄEBCDIC¡£ ΪÁË×ªÒÆEBCDICºÍÆäËû²»Ö§³ÖµÄÎļþÀàÐÍ£¬Äã±ØÐë´´½¨×Ô¼ºµÄ¹ýÂËInputStreamsºÍOutputStreamsºÍ×ܽáËûÃÇÖÜΧµÄÁ÷Í˻ػòÓÉFTPClient·½·¨ËùÐè¡£ FTPClientʹÓÃNetASCII¹ýÂËÆ÷Á÷ÌṩASCIIÎļþ͸Ã÷´¦Àí¡£ ÎÒÃǻῼÂǰÑEBCDICÂëµÄÖ§³Ö£¬Èç¹ûÓÐ×ã¹»µÄÐèÇó¡£ FTP.NON_PRINT_TEXT_FORMAT £¬ FTP.STREAM_TRANSFER_MODEºÍFTP.FILE_STRUCTUREÊÇΨһ֧³ÖµÄ¸ñʽ£¬´«ÊäģʽºÍÎļþ½á¹¹¡£
ÓÉÓÚÔÚ²»Í¬Æ½Ì¨Éϲå×ù´¦Àí¿ÉÒÔÏÔ×ŲîÒ죬ÔÚFTPClient×Ô¶¯·¢³öÒ»¸öеĶ˿ڣ¨»òEPRT£©ÃüÁî֮ǰ£¬Ã¿´Î´«ÊäÒªÇóµÄ·þÎñÆ÷Á¬½Óµ½¿Í»§¶ËµÄÊý¾Ý¶Ë¿Ú¡£ Õ⽫ȷ±£ÏàͬµÄWindows£¬UnixºÍMacintoshƽ̨ÎÞ¹ÊÕϵÄÐÐΪ¡£ ´ËÍ⣬Ëü½â³ý²»±Ø·¢³ö¶Ë¿Ú£¨»òEPRT£©ÃüÁî×Ô¼ººÍÓëÆ½Ì¨ÓйØÎÊÌâµÄ³ÌÐòÔ±¡£
´ËÍ⣬ΪÁ˰²È«Æð¼û£¬ËùÓеÄÊý¾ÝÁ¬½Óµ½¿Í»§¶Ë½øÐÐÑéÖ¤£¬ÒÔÈ·±£ËûÃÇ´òËã´Óµ³£¨Ö÷»úºÍ¶Ë¿Ú£©ÆðÔ´¡£ Èç¹ûÒ»¸öÊý¾ÝÁ¬½ÓÊÇÓɵ³·¢ÆðµÄÒ»¸öÒâÍ⣬¸ÃÃüÁ¹Ø±ÕÌ×½Ó×Ö²¢Å׳öÒ»¸öIOExceptionÒì³£¡£ Äú¿ÉÒÔ½ûÓôËÐÐΪsetRemoteVerificationEnabled()
ÄãÓ¦¸Ã¼Çס£¬ÔÚFTP·þÎñÆ÷¿ÉÒÔÑ¡Ôñ¹ýÔç¹Ø±ÕÁ¬½Ó£¬Èç¹û¿Í»§Òѳ¬¹ý¸ø¶¨µÄʱ¼ä½Ï³¤Ê±ÆÚ£¨Í¨³£Îª900Ã룩ÏÐÖᣠ½«¼ì²âµÄFTPClientÀàFTP·þÎñÆ÷Á¬½Ó¹ýÔç¹Ø±Õ£¬µ±ËüÊÕµ½FTPReply.SERVICE_NOT_AVAILABLEÏìÓ¦ÃüÁî¡£ Ò»µ©ÕâÖÖÇé¿ö·¢Éúʱ£¬FTPÀà·½·¨Óöµ½µÄ´ð¸´½«Å׳öÒ»¸öFTPConnectionClosedException ¡£
FTPConnectionClosedExceptionÊÇÒ»¸ö×ÓÀàIOException £¬Òò´Ë²»±Ø·Ö±ð±»²¶»ñ£¬µ«Èç¹ûÄãҪץסËü·Ö¿ª£¬ËüµÄcatch¿é±ØÐë³öÏÖÔÚ¸üÒ»°ãµÄIOException catch¿é¡£ µ±ÄãÓöµ½Ò»¸öFTPConnectionClosedException £¬±ØÐë¶Ï¿ªÓëÁ¬½Ódisconnect()Í×ÉÆÇåÀí£¬ÏµÍ³×ÊԴʹÓÃFTPClient¡£ ÔÚ¶Ï¿ª£¬Äã¿ÉÒÔ¼ì²é´úÂëºÍÎı¾µÄ×îºó´ð¸´ÓëgetReplyCode £¬ getReplyStringºÍgetReplyStrings ¡£ Äú¿ÉÄÜ»á±ÜÃâ·þÎñÆ÷¶Ï¿ª£¬¶ø¿Í»§¶ËÏÐÖõĿղÙ×÷Ö¸Áîͨ¹ý¶¨ÆÚ·¢Ë͵½·þÎñÆ÷¡£ Ëü²»Êǵ¥¶ÀÁгöÿ¸ö·½·¨£¬ÎÒÃÇÔÚÕâÀïÌáµ½µÄÿ¸ö·½·¨Óë·þÎñÆ÷ͨÐÅ£¬²¢Å׳öÒ»¸öIOExceptionÒì³£Ò²¿ÉÒý·¢MalformedServerReplyException £¬ÕâÊÇÒ»¸öIOExceptionÒì³£×ÓÀà¡£ ½«Å׳öÒ»¸öMalformedServerReplyException´ð¸´Ê±£¬´Ó·þÎñÆ÷ÊÕµ½µÄÆ«Àë×ã¹»µÄÐÒ鹿·¶£¬Ëü²»ÄÜÔÚÒ»¸öÓÐÓõķ½Ê½½âÊ;¡¹ÜÊÔͼ¾¡¿ÉÄÜ¿íËÉ¡£
ÉÏÊÐAPIµÄÁ½¸öÀý×ÓµÄĿ¼Áбí·ÖÒ³ºÍÎÞÒ³ÊýµÄ·¶Àý£¬ÈçÏ£º ÎÞÒ³Êý£¨È«Ãûµ¥£©·ÃÎÊ£¬Ê¹Ó÷ÖÎöÆ÷¿É¾×Ô¶¯¼ì²â£º FTPClient f =new FTPClient£¨£©; f.connect£¨·þÎñÆ÷£©; f.login£¨Óû§Ãû£¬ÃÜÂ룩;
FTPFile []Îļþ= listfiles <Ì×¼þ£¨Ä¿Â¼£©;
·ÖÒ³·ÃÎÊ£¬Ê¹Ó÷ÖÎöÆ÷ÎÞ·¨·ÃÎʵÄ×Ô¶¯¼ì²â¡£ ÔÚÓ¦¸Ã´Ó
org.apache.commons.net.FTPFileEntryParserÅÉÉúinitateListParsingµÚÒ»¸ö²ÎÊý¶¨ÒåµÄÀࣺ
FTPClient f =new FTPClient£¨£©; f.connect£¨·þÎñÆ÷£©; f.login£¨Óû§Ãû£¬ÃÜÂ룩; FTPListParseEngineÒýÇæ=
f.initiateListParsing£¨¡°com.whatever.YourOwnParser¡±£¬Ä¿Â¼£©;
¶ø£¨engine.hasNext£¨£©£©{
FTPFile []Îļþ= engine.getNext£¨25£©; / /¡°Ò³Ãæ´óС¡±ÄãÏëÒª / /×öÄãÏë×öÕâЩÎļþ£¬ÏÔʾËüÃÇ£¬µÈ / /°º¹óFTPFile²»´´½¨¶ÔÏó£¬Ö±µ½ÐèÒª¡£ }
·ÖÒ³·ÃÎÊ£¬Ê¹Ó÷ÖÎöÆ÷¿É¾×Ô¶¯¼ì²â£º FTPClient f =new FTPClient£¨£©; f.connect£¨·þÎñÆ÷£©; f.login£¨Óû§Ãû£¬ÃÜÂ룩;
FTPListParseEngine engine = f.initiateListParsing£¨Ä¿Â¼£©;
¶ø£¨engine.hasNext£¨£©£©{
FTPFile []Îļþ= engine.getNext£¨25£©; / /¡°Ò³Ãæ´óС¡±ÄãÏëÒª / /×öÄãÏë×öÕâЩÎļþ£¬ÏÔʾËüÃÇ£¬µÈ / /°º¹óFTPFile²»´´½¨¶ÔÏó£¬Ö±µ½ÐèÒª¡£ }
ÓйØÊ¹Ó÷þÎñÆ÷ÉϵÄĿ¼Çåµ¥FTPClientÀý×Ó
ʹÓÃÓ¢ÓïÒÔÍâµÄÓïÑÔ
? ʹÓÃÈÕÆÚ¸ñʽ¡°ÒÔÍâµÄÃÀ¹úÓ¢Ó±ê×¼MM d yyyy ? ÔÚ²»Í¬µÄÊ±Çø£¬ÄãÐèÒªÔÚÒÏȺÒÀÀµ¼ì²é׼ȷµÄʱ¼ä´Á
?
¼ûFTPClientConfig ¡£ ×÷Õߣº
µ¤Äá¶ûÂ¥Savarese£¬ÂÞÀïÎÂ˹¶Ù Áí¼û£º
FTP £¬ FTPConnectionClosedException £¬ FTPFileEntryParser £¬ FTPFileEntryParserFactory £¬ DefaultFTPFileEntryParserFactory £¬ FTPClientConfig £¬ MalformedServerReplyException
×Ö¶ÎÕªÒª static ACTIVE_LOCAL_DATA_CONNECTION_MODE int Ò»¸ö³£Á¿Ö¸Ê¾ÆÚ´ýµÄFTP»á»°Ö®¼ä·¢ÉúµÄËùÓд«Êä¿Í»§¶Ë£¨±¾µØ£©ºÍ·þÎñÆ÷£¬¸Ã·þÎñÆ÷Ó¦¸ÃÁ¬½Óµ½¿Í»§¶ËµÄÊý¾Ý¶Ë¿ÚÀ´Æô¶¯Êý¾Ý´«Êä¡£ static ACTIVE_REMOTE_DATA_CONNECTION_MODE int Ò»¸ö³£Á¿Ö¸Ê¾ÆÚ´ýµÄFTP»á»°µÄËùÓÐתÈ÷¢ÉúÔÚÁ½¸öÔ¶³Ì·þÎñÆ÷£¬¶ø¿Í»§¶ËÁ¬½Óµ½ÒªÁ¬½Óµ½ÆäËû·þÎñÆ÷µÄÊý¾Ý¶Ë¿Ú·¢ÆðÊý¾Ý´«Êä·þÎñÆ÷¡£ static PASSIVE_LOCAL_DATA_CONNECTION_MODE int Ò»¸ö³£Á¿Ö¸Ê¾ÆÚ´ýµÄFTP»á»°Ö®¼ä·¢ÉúµÄËùÓд«Êä¿Í»§¶Ë£¨±¾µØ£©ºÍ·þÎñÆ÷£¬·þÎñÆ÷ÔÚ±»¶¯Ä£Ê½Ê±£¬ÒªÇó¿Í»§¶ËÁ¬½Óµ½·þÎñÆ÷µÄÊý¾Ý¶Ë¿ÚÀ´Æô¶¯´«Êä¡£ static PASSIVE_REMOTE_DATA_CONNECTION_MODE int Ò»¸ö³£Á¿Ö¸Ê¾ÆÚ´ýµÄFTP»á»°µÄËùÓÐתÈ÷¢ÉúÔÚÁ½¸öÔ¶³Ì·þÎñÆ÷£¬¶ø¿Í»§¶ËÁ¬½Óµ½´¦ÓÚ±»¶¯Ä£Ê½£¬ÒªÇóÆäËû·þÎñÆ÷Á¬½Óµ½µÚÒ»¸ö·þÎñÆ÷µÄÊý¾Ý¶Ë¿Ú·¢ÆðÊý¾Ý´«Êä·þÎñÆ÷¡£ org.apache.commons.net.ftpÀà´Ó¼Ì³ÐµÄ×ֶΡ£ µÄFTP _commandSupport_ , _controlEncoding , _controlInput_ , _controlOutput_ , _newReplyString , _replyCode , _replyLines , _replyString ,