Chen Yangjian's Blog

Carpe diem - Seize the day

[Apache] FTP in commons.net

| Comments

commons.net 是 apache 基金会的众多开源好东西之一, 为用户提供了许多流行网络协议的 Java 实现。我最近要用到 FTPClient。 结果通过 getModificationTime(“path/to/file”) 方法获取文件更改时间的时候出了问题, 抛出个很神奇的异常 ArrayIndexOutofBound。看了源文件才发现问题所在。

getModification() 通过 MDTM 命令获取文件更改时间,在 commons.net 中命令有个索引的机制, 在 FTPCommands.java 中定义。到该文件里头一看,MDTM 被索引到 33,而里头的 _commands\[\] 数组只有 33 个元素,即索引 33 刚好越界了。_commands\[\] 并没有将 MDTM 放到里头去。手动添加进去就好了。该命令本身其实在 commons.net-2.0 版本中已经实现。

Comments