怎样获取 ftp服务器上面的当前日期? 用的框架是commons-net
解决方案 »
- 求相关java范例源代码。
- 急求解决我写了一个JTable的动态添加行数据但占用CPU达到百分之50
- 用什么方法能够爬取一个网站所有的网页??
- 有个简单题目不知道解决。帮帮忙。。我是初学者
- Java(TM) Platform SE binary?
- 关于在面板中拖动,选中多个组件和改变组件大小问题,请高手帮忙
- 问个关于java图形动画编程的问题
- 说话算数解决,立即给分,xmtanglyj(xiaoming)解答了第一个问题,请进来接分~!
- 向大家请教问题,为表诚意,先给300分。(如果每个帖子的有效回答超过10个,我就会再开一个,直到问题圆满解决)
- jbuilder 3.5 enterprise 的 serial 和 key
- 数组的问题
- 为什么paranum=32
public class MyUnixFTPParser implements FTPFileEntryParser { public FTPFile parseFTPEntry(String listEntry) {
FTPFile file = new FTPFile();
// -rw-r--r-- 1 px1adm sapsys 4748 11月13日 17:24
// DGJSH_ACCRUAL_ENTRY.txt(示例字符串)
// 0. 看文件的是否是目录
String dir = listEntry.substring(0, 1);
if (dir.equals("-")) {// 文件
file.setType(FTPFile.FILE_TYPE);
} else {
file.setType(FTPFile.DIRECTORY_TYPE);
} // 1. 解析文件的权限
String[] strs = { listEntry.substring(1, 4)// 获得权限的字符串
, listEntry.substring(4, 7), listEntry.substring(7, 10) }; int[] users = { FTPFile.USER_ACCESS, FTPFile.GROUP_ACCESS, FTPFile.WORLD_ACCESS };
for (int j = 0; j < strs.length; j++) {
char[] arr = strs[j].toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 'r') {
file.setPermission(users[j], FTPFile.READ_PERMISSION, true);// 依次把权限添加到file中
} else if (arr[i] == 'w') {
file.setPermission(users[j], FTPFile.WRITE_PERMISSION, true);
} else if (arr[i] == 'x') {
file.setPermission(users[j], FTPFile.EXECUTE_PERMISSION, true);
}
} } // 设置hardLink的个数
// 去除字符串前面的权限
listEntry = listEntry.substring(10);
listEntry = deleteEmptyStr(listEntry);// 去除前面的空格
long links = getStringHeadNum(listEntry);
file.setHardLinkCount((int) links); // 设置创建该文件的用户
// 去除hardLink的个数
listEntry = removeStringHeadNum(listEntry);
listEntry = deleteEmptyStr(listEntry);// 去除字符串头的空格
String user = getHeadString(listEntry);
file.setUser(user); // 设置用户所在的组
// 去除用户
listEntry = removeHeadString(listEntry);
listEntry = deleteEmptyStr(listEntry);
String group = getHeadString(listEntry);
file.setGroup(group); // 设置文件的大小
listEntry = removeHeadString(listEntry);
listEntry = deleteEmptyStr(listEntry);
long size = getStringHeadNum(listEntry);
file.setSize(size); // 设置时间
listEntry = removeHeadString(listEntry);
listEntry = deleteEmptyStr(listEntry);
// 获得日期和月份
Calendar time = transferHeadStringToTime(listEntry);
file.setTimestamp(time); // 获得文件名字
listEntry = removeHeadTimeString(listEntry);
listEntry = deleteEmptyStr(listEntry);
// 剩下的只有文件名字了
if (listEntry.startsWith("@")) {
file.setLink(listEntry.substring(1));
file.setName(listEntry);
} else {
file.setName(listEntry);
}
return file;
} /**
* 把开始的时间字符串去除掉
*/
private String removeHeadTimeString(String str) {
if (str.contains("年")) {// 如果只包含年
return removeHeadString(str);
} else {
int index = str.indexOf(":") + 3;
return str.substring(index);
}
} /**
* 由于本系统的FTP获得字符串中,出现的时间格式有两种,一种是只有年月日,另一个种是有月日时分,针对于这两种<br>
* 针对于这两种格式,如果没有年的就以1970年为准,没有时和分就以00:00为准
*/
private Calendar transferHeadStringToTime(String str) {
String year = "1970";
String month = "0";
String day = "0";
String hour = "0";
String minute = "0"; // 1. 首先检索'年'的存在
if (str.contains("年")) {
// 年就存在于'年'的前4位
int index = str.indexOf('年');
year = str.substring(index - 4, index);// 因为年固定是4位
} // 2. 检索'月'
int index = str.indexOf("月");
// 月可能是1位,也可能是两位
// 首先,尝试他是两位时
if (str.contains("年")) {// 如果包含年,那么就年月之间的数字
month = str.substring(str.indexOf('年') + 1, index).trim();
} else {
month = str.substring(0, index).trim();
} // 3. 检索'日'
int index2 = str.indexOf("日");
// 日一定是在于日与月之间的
day = str.substring(index + 1, index2).trim(); // 4. 时分,如果没有年的存在,那么就有时和分的存在
if (!str.contains("年")) {
// 时和分一定在日的后面
str = str.substring(index2 + 1).trim();
index = str.indexOf(':');// 获得时和分的分割符
hour = str.substring(0, index);
minute = str.substring(index + 1, index + 3);// 分一定是2位
} Calendar calendar = Calendar.getInstance();
calendar.set(new Integer(year), new Integer(month), new Integer(day), new Integer(hour), new Integer(minute), 0);
calendar.set(Calendar.MILLISECOND, 0);// 把不能获得属性全部置为最初始的状态 return calendar;
} /**
* 获得字符串前面不的字符串,直到遇到空格或字符串结束
*/
private String getHeadString(String str) {
char[] arr = str.toCharArray();
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == ' ') {
break;
} else {
index = i;
}
}
return str.substring(0, index + 1);
} private String removeHeadString(String str) {
char[] arr = str.toCharArray();
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == ' ') {
break;
} else {
index = i;
}
}
return str.substring(index + 1);
} /**
* 获得字符串头的数字
*/
private Long getStringHeadNum(String str) {
char[] arr = str.toCharArray();
String num = "";
for (int i = 0; i < arr.length; i++) {
if (isDigit(arr[i])) {
num = num + arr[i];
} else {
return new Long(num);
}
} return (long) 0;
} /**
*去除字符串头的数字
*/
private String removeStringHeadNum(String str) {
char[] arr = str.toCharArray();
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (isDigit(arr[i])) {
index = i;
} else {
break;
}
} return str.substring(index + 1);
} /**
* 判断是否是数字字符
*/
private boolean isDigit(char c) {
for (int i = 0; i < 10; i++) {
if (((char) ('0' + i)) == c) {
return true;
}
}
return false;
} private static String deleteEmptyStr(String str) {
return str.trim();
} public String readNextEntry(BufferedReader reader) throws IOException {
String line = reader.readLine();
return line;
} public static void main(String[] args) {
String str = "1987年";
System.out.println(str.indexOf('年'));
} @SuppressWarnings("unchecked")
public List preParse(List original) {
// 把总数的行给去掉(第一行)
original.remove(0);
return original;
}}public class MyUnixFTPFactory implements FTPFileEntryParserFactory { public FTPFileEntryParser createFileEntryParser(String arg0) throws ParserInitializationException {
return new MyUnixFTPParser();
} public FTPFileEntryParser createFileEntryParser(FTPClientConfig arg0) throws ParserInitializationException {
return new MyUnixFTPParser();
}}[/code]
公司用的unix对现有的都不兼容,这是我自己写的,解决了问题,你自己看着办吧!