要在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服务器地址、端口、用户名、密码和目录。