zoukankan      html  css  js  c++  java
  • 有关ftp4j的FTPListParseException异常

    昨天换了个ftp服务器,发现程序出现了异常it.sauronsoftware.ftp4j.FTPListParseException,网上搜了下,说是FTPClient.list()时it.sauronsoftware.ftp4j.listparsers.DOSListParser对日期的解析出现了异常,参考了提供的解决方案,ftp服务器是不能随便动的,应用服务器语言环境也是不好修改的,只能修改ftp4j的源码。

    网上下到源码http://sourceforge.net/projects/ftp4j/ 找到DOSListParser,日期的解析使用DATE_FORMAT 

    //private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yy hh:mm a");修改前
    private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yy hh:mm a", Locale.ENGLISH);

    ftp返回的文件列表类似"01-06-16  06:02AM                 2245 ****.txt",DOSListParser一行一行的解析,组成日期格式"01/06/16 06:02 AM",使用DATE_FORMAT parse成日期,本来没什么问题就出现在"AM"上,修改前DATE_FORMAT的Locale是默认的,也就是和操作系统有关,我本地是windows地区是中国,因此"MM/dd/yy hh:mm a"不能解析"01/06/16 06:02 AM",而能够解析"01/06/16 06:02 上午",好办,修改如上DATE_FORMAT统一使用Locale.ENGLISH,既然DATE_FORMAT统一使用Locale.ENGLISH,那么兼容期间,对AM/PM进行转换,中文-》英文

    ampm=("上午".equals(ampm)? "AM":("下午".equals(ampm)? "PM":ampm));
    String mdString = month + "/" + day + "/" + year + " " + hour + ":" + minute + " " + ampm;

    源码是用Ant打包的,导入idea中直接运行build的jar就好了,很顺利

    补充下:ftp服务器架在windws上使用DOSListParser解析,架在linux上使用UnixListParser解析

  • 相关阅读:
    分布式框架服务调用超时设计与实现
    分布式框架灰度发布实现
    写给自己的 SOA 和 RPC 理解
    Java 基础【19】代理
    Java 基础【18】 反射与内省
    Spring HttpInvoker 从实战到源码追溯
    Lombok 使用攻略
    Guava Preconditions 工具参数前置校验
    CAS 单点登录【2】自定义用户验证
    Hibernate 离线对象构建通用查询
  • 原文地址:https://www.cnblogs.com/yhzh/p/5110293.html
Copyright © 2011-2022 走看看