我正在使用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/