1.4.1 ¹öÀü ¹Þ¾Æ¼ Å×½ºÆ® ÇØº¸°í ÀÖ½À´Ï´Ù.
<ÆÄÀϸ®½ºÆ®>
-rw-r--r-- 1 jeus jeus 4245 10¿ù 31ÀÏ 09:17 .profile
-rw-rw-r-- 1 jeus jeus 4486 10¿ù 23ÀÏ 16:09 .profile715006224
-rw-rw-r-- 1 jeus jeus 4856 10¿ù 23ÀÏ 16:16 .profile974565758
-rw------- 1 jeus jeus 22 10¿ù 21ÀÏ 16:30 .sh_history
-rw------- 1 jeus jeus 36 11¿ù 11ÀÏ 10:41 dead.letter
drwxr-xr-x 7 jeus jeus 512 11¿ù 5ÀÏ 15:37 easy_npl
drwxr-xr-x 3 jeus jeus 512 2007³â 10¿ù 4ÀÏ emi
drwxr-xr-x 15 jeus jeus 512 10¿ù 23ÀÏ 17:40 jeus5
<¼Ò½ºÄÚµå>
FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
config.setServerLanguageCode("ko");
config.setDefaultDateFormatStr("yyyy³â M¿ù dÀÏ");
config.setRecentDateFormatStr("M¿ù dÀÏ HH:mm");
ftpClient.configure(config);
ftpClient.setControlEncoding("euc-kr");
FTPFile[] ftpfiles = ftpClient.listFiles();
for(int i = 0; i < ftpfiles.length; i++){
if( ftpfiles[i] != null ){
System.out.println("[File name]=" + ftpfiles[i].toString());
}
else{
System.out.println("[File name]= null");
}
}
¹®Á¦´Â ÀÌ·¸°Ô ¼³Á¤ÇÏ¿©µµ À§ÀÇ ¸®½ºÆ®Ã³·³ ÃÖ±Ù ÆÄÀÏ "¿ùÀÏ ½Ã°£:ºÐ" À¸·Î Ç¥½ÃµÇ´Â ¸®½ºÆ®´Â Àß °¡Á®¿ÀÁö¸¸
"³â¿ùÀÏ" Çü½ÄÀ¸·Î Ç¥½ÃµÇ´Â ¸®½ºÆ®´Â null ·Î ¹ÝȯÇÕ´Ï´Ù.
¾ÆÆÄÄ¡°¡¼ 1.4.1 ¼Ò½ºÄÚµå ¹Þ¾Æ¼ ÃßÀûÇØºÃ´õ´Ï
org.apache.commons.net.ftp.parser ÆÐŰÁö --> UnixFTPEntryParser.java ¿¡¼ -->
public FTPFile parseFTPEntry(String entry) -->
if (matches(entry)){ À̺κÐÀ» ½ÇÇàÇÏ¸é¼ REGEX ¸¦ ¼öÇàÇÏ¿© ÆÐÅÏ ¸ÅÄ¡À» ÇÏ´õ±º¿ä.
ÆÐÅϸÅÄ¡¸¦ ¼öÇàÇÒ¶§´Â UNIX ÀÇ °æ¿ì À§ java ÆÄÀÏ¿¡¼ Á¤ÀÇµÈ ¾Æ·¡ÀÇ REGEX ¸¦ Âü°íÇÕ´Ï´Ù.
private static final String REGEX =
"([bcdlfmpSs-])"
+"(((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-])))\\+?\\s+"
+ "(\\d+)\\s+"
+ "(\\S+)\\s+"
+ "(?:(\\S+)\\s+)?"
+ "(\\d+)\\s+"
/*
numeric or standard format date
*/
+ "((?:\\d+[-/]\\d+[-/]\\d+)|(?:\\S+\\s+\\S+))\\s+"
/*
year (for non-recent standard format)
or time (for numeric or recent standard format
*/
+ "(\\d+(?::\\d+)?)\\s+"
+ "(\\S*)(\\s*.*)";
ÀÌ ÆÐÅϸÅĪÀ» À§ÇÑ REGEX °¡ ¸ÅĪÀ» ÇÒ¶§
-rw-r--r-- 1 jeus jeus 4245 10¿ù 31ÀÏ 09:17 .profile
¿Í °°Àº ÆÐÅÏÀº ¸ÅĪÀ» Çϳª ¾Æ·¡ÀÇ ÆÐÅÏÀº
drwxr-xr-x 3 jeus jeus 512 2007³â 10¿ù 4ÀÏ emi
¸ÅĪÀ» ¸øÇÕ´Ï´Ù. ±×·¡¼ °á±¹ null À» ¸®ÅÏÇÏ´õ±º¿ä.
±×·¡¼ ÇØ°á¹æ¹ýÀ¸·Î REGEX ¿¡¼ ÆÐÅϸÅĪÀ» Á¤È®ÇÏ°Ô ºÐ±âÇϼ Â¥´ø°¡ À§ µÎ°¡Áö ÄÉÀ̽ºÀÇ ÆÐÅÏÀ» ÆÐÅϸÅĪÇϵµ·Ï
REGEX ¸¦ ´Ù½Ã ®½À´Ï´Ù.
(º¯°æÀü)
+ "((?:\\d+[-/]\\d+[-/]\\d+)|(?:\\S+\\s+\\S+))\\s+"
+ "(\\d+(?::\\d+)?)\\s+"
(º¯°æÈÄ)
+ "((?:\\d+\\S?\\s+\\d+\\S?\\s+\\d+\\S?)|(?:\\d+[-/]\\d+[-/]\\d+)|(?:\\S+\\s+\\S+))\\s+"
+ "((?:\\d+:\\d+)\\s+|)"
ÀÌ·¸°Ô REGEX ¸¦ º¯°æÇÏ¿© ½ÇÇàÇÏ¿´´õ´Ï ÆÐÅϸÅĪ¿¡¼ °ªÀ» °¡Á®¿À´õ±º¿ä.(ÆÐÅÏ ¸ÅĪÇÒ¶§ ¾Æ·¡ ÄÚµåÀÇ ±×·ì°ª¿¡ ¸Â°Ô ©·ÁÁö°Ô²û ÆÐÅÏ ¸ÅĪÀ» ®½À´Ï´Ù.) ±Ùµ¥ ¸®½ºÆ®´Â °è¼Ó null ÀÌ´õ¶ó±¸¿ä. ±×·¡¼ ´Ù½Ã ÃßÀûÇØºÃ´õ´Ï
if (matches(entry))
{
String typeStr = group(1);
String hardLinkCount = group(15);
String usr = group(16);
String grp = group(17);
String filesize = group(18);
String datestr = group(19) + " " + group(20);
String name = group(21);
String endtoken = group(22);
try
{
file.setTimestamp(super.parseTimestamp(datestr));
}
catch (ParseException e)
{
return null; // this is a parsing failure too.
}
ÀÌ·¸°Ô ¸ÅÄ¡µÈ ÆÐÅÏ¿¡¼ ±×·ìÀ» °¡Á®¿À°í ³ª¼
org.apache.commons.net.ftp.parser ³»ÀÇ FTPTimestampParserImpl.java ÆÄÀÏÀÇ --> parseTimestamp() ÀÌ¸Þ¼Òµå ³»ÀÇ
if (parsed != null && pp.getIndex() == timestampStr.length()) À̺κп¡¼ ½ÇÁ¦ ¼³Á¤µÈ ±æÀ̰¡ ÇѰ³¾¿ ¸ðÀÚ¶ø´Ï´Ù.
Äڵ带 »ìÆìº¸´Ï String datestr = group(19) + " " + group(20); ¿¡¼ ½ºÆäÀ̽º°¡ µþ·Á°¡´Â°Å °°¾Æ¼ ¹Ù·Î¾Æ·¡¿¡ datestr = datestr.trim(); ÀÌ·¸°Ô ó¸®ÇØÁÖ°í ³ª¼ ½ÇÇàÇß´õ´Ï ¸®½ºÆ®¿¡ ¸ðµç°ÇÀÌ º¸ÀÔ´Ï´Ù. ¤Ñ¤Ñ;; ¾Æ ³ë°¡´Ù¿©..
Çϼö°¡ ÆÄ¾ÇÇÑ »óȲÀ» Àؾî¹ö¸±±îºÁ ÀÌ·¸°Ô Àû¾îº¾´Ï´Ù. ^^;;;