要在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服務器地址、端口、用戶名、密碼和目錄。