我的目标是轮询SFTP服务器的更改。我的第一个想法是检查dir文件的数量是否发生了变化。然后,可能需要额外检查目录中的更改。是否有一种简单的方法来检查SFTP服务器中是否有更改?
目前我使用如下:
try {
FileSystemOptions opts = new FileSystemOptions();
SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);
SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 60000);
FileSystemManager manager = VFS.getManager();
FileObject remoteFile = manager.resolveFile(SFTP_URL, opts);
FileObject[] fileObjects = remoteFile.getChildren();
System.out.println(DateTime.now() + " --> total number of files: " + Objects.length);
for (FileObject fileObject : fileObjects) {
if (fileObject.getName().getBaseName().startsWith("zzzz")) {
System.out.println("found one: " + Object.getName().getBaseName());
}
}
} catch (Exception e) {
e.printStackTrace();
}
这是使用Apache的百科全书VFS2 2.2.0。它工作“很好”,但是当服务器文件太多时,只需要几分钟就可以获得计数(目前,需要2分钟才能获得具有〜10k文件的服务器的计数)。任何方式来更快地获得服务器上的计数或其他更改?
你需要过滤文件吗?或者只是数一数。 – Dezigo
@Dezigo我的目标是轮询sftp服务器,并在发生变化时做出反应。所以理想情况下,我认为第一种方法是检查该目录中的文件数量。也许你可以提出更好的检查方法? – iCodeLikeImDrunk