package org.ilp.utils; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPListParseEngine; import org.apache.commons.net.ftp.FTPReply; import org.ilp.utils.ftp.filter.FTPFileFilterImpl; public class FtpTest { public static void main(String[] args) { FTPClient ftp = new FTPClient(); try { int reply; ftp.connect("192.168.0.190", 21); ftp.login("ftpuser", "123456x"); ftp.enterLocalPassiveMode(); ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); ftp.setFileType(FTP.BINARY_FILE_TYPE); ftp.setRemoteVerificationEnabled(false); reply = ftp.getReplyCode (); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); System.err.println("FTP server refused connection!"); System.exit(1); } else { // jump to the specified directory boolean flag = ftp.changeWorkingDirectory("/TEST/IN/"); if (!flag) { ftp.makeDirectory("/TEST/IN/"); } // Get the current directory by default FTPListParseEngine engine = ftp.initiateListParsing(); // Paging to get the file // FTPFile[] files = engine.getNext(10); // custom filter FTPFileFilterImpl filter = new FTPFileFilterImpl(); // filter by file name filter.setFileName("DEBMAS"); FTPFile[] files = engine.getFiles(filter); for (FTPFile ftpFile : files) { if (ftpFile.isFile()) { InputStream retrieveFileStream = ftp.retrieveFileStream(ftpFile.getName()); BufferedReader reader = new BufferedReader(new InputStreamReader(retrieveFileStream, "UTF-8")); String line; StringBuilder builder = new StringBuilder(); while ((line = reader.readLine()) != null) { builder.append(line); } reader.close(); if (retrieveFileStream != null) { retrieveFileStream.close(); } ftp.completePendingCommand(); String xml = builder.toString(); System.out.println(ftpFile.getName() + ":" + xml); } } } ftp.logout(); } catch (Exception e) { System.out.println(e.getMessage()); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (Exception ioe) { } } } } }
package org.ilp.utils.ftp.filter; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPFileFilter; public class FTPFileFilterImpl implements FTPFileFilter { private String fileName; @Override public boolean accept(FTPFile file) { String name = file.getName(); if (name.startsWith(fileName)) { return true; } return false; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } }