我想从 SFTP 获取文件,这些文件是在 java 中给定时间戳(上次拉取时间)之后创建的。到目前为止,我正在使用 j2ssh。请让我知道是否有其他 API 支持此类功能。
问问题
236 次
1 回答
0
Jsch 支持 ls 命令,它将带回远程文件的所有属性。您可以编写一些代码来消除要从那里检索的文件。
Java 文档:http ://epaul.github.io/jsch-documentation/javadoc/
此示例比较远程文件时间戳以查找最旧的文件,修改它以将您的上次运行日期与远程文件日期进行比较并不费力,然后将下载作为循环的一部分。
使用 Java 查找文件大小和上次修改 SFTP 文件的代码
try {
list = Main.chanSftp.ls("*.xml");
if (list.isEmpty()) {
fileFound = false;
}
else {
lsEntry = (ChannelSftp.LsEntry) list.firstElement();
oldestFile = lsEntry.getFilename();
attrs = lsEntry.getAttrs();
currentOldestTime = attrs.getMTime();
for (Object sftpFile : list) {
lsEntry = (ChannelSftp.LsEntry) sftpFile;
nextName = lsEntry.getFilename();
attrs = lsEntry.getAttrs();
nextTime = attrs.getMTime();
if (nextTime < currentOldestTime) {
oldestFile = nextName;
currentOldestTime = nextTime;
}
}
于 2017-08-22T11:18:09.803 回答