Here you will find my OS/400 FileEntry parser. Maybe one would add this to commons.net?
Ciao, Mario
---cut here--- import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPFileListParserImpl;
import java.util.Calendar;
public class OS400FTPEntryParser extends FTPFileListParserImpl
{
private static final String REGEX =
"(\\S+)\\s+" // user
+ "(\\d+)\\s+" // size
+ "(\\d\\d)/(\\d\\d)/(\\d\\d)\\s+" // year/month/day
+ "(\\d\\d):(\\d\\d):(\\d\\d)\\s+" // hour/minutes/seconds
+ "(\\*\\S+)\\s+" // *STMF/*DIR
+ "(\\S+/?)\\s*"; // filename public OS400FTPEntryParser()
{
super(REGEX);
} public FTPFile parseFTPEntry(String entry)
{ FTPFile file = new FTPFile();
file.setRawListing(entry);
int type; if (matches(entry))
{
String usr = group(1);
String filesize = group(2);
String yr = group(3);
String mo = group(4);
String da = group(5);
String hr = group(6);
String min = group(7);
String sec = group(8);
String typeStr = group(9);
String name = group(10); if (typeStr.equalsIgnoreCase("*STMF"))
{
type = FTPFile.FILE_TYPE;
}
else if (typeStr.equalsIgnoreCase("*DIR"))
{
type = FTPFile.DIRECTORY_TYPE;
}
else
{
type = FTPFile.FILE_TYPE;
}file.setType(type);
file.setUser(usr);
try
{
file.setSize(Integer.parseInt(filesize));
}
catch (NumberFormatException e)
{
// intentionally do nothing
} Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.HOUR_OF_DAY, 0); try
{
int year = Integer.parseInt(yr, 10);
if (year < 70)
{
year += 2000;
}
else
{
year += 1900;
} cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, Integer.parseInt(mo, 10));
cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(da, 10)); cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hr, 10));
cal.set(Calendar.MINUTE, Integer.parseInt(min, 10));
cal.set(Calendar.SECOND, Integer.parseInt(sec, 10)); file.setTimestamp(cal);
}
catch (NumberFormatException e)
{
// do nothing, date will be uninitialized
} if (name.endsWith("/"))
{
name = name.substring(0, name.length()-1);
}
int pos = name.lastIndexOf('/');
if (pos > -1)
{
name=name.substring(pos+1);
}file.setName(name);
return file;
}
return null;
}
}
---cut here---
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
