我正在使用ChannelSftp(jsch-0.1.42.jar)从UNIX服务器复制文件,并且可以成功完成此操作,但是最后修改日期已被当前时间覆盖。

我在用
chanSftp.get(nextName,“ C:/ Test /” + nextName);

有什么办法可以保留远程文件在本地副本上的最后修改时间?

我有使用的远程文件的最后修改时间

attrs = lsEntry.getAttrs();

日期modDate =(日期)format.parse(attrs.getMtimeString());

最佳答案

使用SimpleDateFormat的性能较差。相反,可以直接使用方法getMTime()getATime()。但是它们提供的值减少了毫秒。
这就是为什么他们返回int而不是按照long期望的返回date.getTime()的原因。

SftpATTRS attrs = lsEntry.getAttrs();
Date dateModify = new Date(attrs.getMTime() * 1000L);
Date dateAccess = new Date(attrs.getATime() * 1000L);


在jsch-0.1.50中,请小心使用getAtimeString(),这是缺少1000L的因素。



在jsch-0.1.51中,修正了缺少因子的getAtimeString()错误。

关于jsch - 在使用ChannelSftp进行文件传输时保留上次修改日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9281719/

10-15 21:28