要在Java中监听FTP新增文件,可以使用Apache Commons Net库中的FTPClient类。以下是一个示例代码片段,演示如何监听FTP服务器上的新增文件。
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPClient;
public class FTPFileListener {
public static void main(String[] args) throws Exception {
String server = "ftp.example.com";
int port = 21;
String user = "username";
String password = "password";
FTPClient ftpClient = new FTPClient();
// 连接到FTP服务器
ftpClient.connect(server, port);
ftpClient.login(user, password);
// 设置被动模式
ftpClient.enterLocalPassiveMode();
// 监听指定目录上的新增文件
String directory = "/path/to/ftp/directory";
FTPFile[] files = ftpClient.listFiles(directory);
for (FTPFile file : files) {
System.out.println("Found file: " + file.getName());
}
while (true) {
FTPFile[] newFiles = ftpClient.listFiles(directory);
for (FTPFile newFile : newFiles) {
boolean found = false;
// 检查新增文件是否已经存在
for (FTPFile file : files) {
if (file.getName().equals(newFile.getName())) {
found = true;
break;
}
}
// 如果新增文件不存在于已知文件列表中,则认为是新增文件
if (!found) {
System.out.println("New file added: " + newFile.getName());
}
}
// 更新文件列表以检查新增文件
files = newFiles;
// 每隔一段时间进行检查
Thread.sleep(5000);
}
}
}
在上面的代码中,我们使用ftpClient.listFiles(directory)
方法来获取指定目录上的文件列表。然后,在一个无限循环中,我们定期检查文件列表以查找新增文件。如果发现了新增文件,我们就可以进行相应的处理。请根据实际情况调整代码中的FTP服务器地址、端口、用户名、密码和目录。