#java #peoplesoft #peoplecode
Вопрос:
Я пытаюсь использовать механизм приложений PeopleCode для удаления файлов с удаленного сервера. GetAttachment будет работать, за исключением того, что я хочу просмотреть весь каталог на сервере и сопоставить файлы, такие как march.csv.
Кроме того, мне нужно сделать это по диапазону дат. *.csv между датой 1 и датой 2.
Для получения вложения, по-видимому, требуется, чтобы вы знали имя файла и удаляли файлы по отдельности. Таким образом, сопоставление шаблонов с образцами не будет работать.
Я могу получить список и проверить даты, используя объекты java:
Локальный JavaObject amp;joFile = CreateJavaObject(«java.io.Файл», КАТАЛОГ SFO_DEL_FTP_AET.FTP); Локальный JavaObject amp;joFileList; Локальный JavaObject amp;reflectArray = GetJavaClass(«java.lang.reflect.Массив»); Локальный JavaObject amp;dttm_format = Создать JavaObject(«java.text.SimpleDateFormat», «гггг-ММ-дд»);
но я могу использовать это только с локальными серверами.
Есть ли способ на самом деле подключиться к серверу, а затем использовать объекты java?
Спасибо, Джей Пи Эс
Ответ №1:
Для этого вы можете использовать сетевую библиотеку Apache Commons. Один из пакетов предназначен для доступа по протоколу FTP/FTPS.
FTPClient ftpClient = new FTPClient();
ftpClient.connect(server, port);
ftpClient.login(user, pass);
FTPFile[] files = ftpClient.listFiles("/yourDir");
Как только вы получите список файлов, вы сможете извлечь имя из FTPFile
объекта.
Чтобы удалить файл, вы можете использовать deleteFile
метод FTPClient.
public boolean deleteFile(String pathname)
Удаляет файл на FTP — сервере. Параметры: путь — Путь к удаляемому файлу. Возвращает: True, если успешно завершено, false, если нет.
for (FTPFile file : files)
{
String fileName = file.getName();
/*if (file.isDirectory())
handle directory access*/
//use getAttachment from the fileName
//in order to delete a file, call FTPClient's deleteFile Method
//ftpClient.deleteFile(filePath);
}
ftpClient.logout();
ftpClient.disconnect();
Вы можете скачать сетевую библиотеку здесь