Java 简单的遍历FTP目录并打印
先去网上找2个jar包:jakarta-oro.jar、commons-net-1.4.1.jar
import java.io.IOException; import java.io.InputStream; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; public class GetFTP { //用来打印的时候分层 public String level = ""; public FTPClient loginFTP(String host, String user, String pass) throws IOException { FTPClient ftp = new FTPClient(); ftp.setControlEncoding("GBK"); ftp.connect(host, 21); ftp.login(user, pass); return ftp; } public void ftpClose(FTPClient ftp) { try { ftp.logout(); if (ftp.isConnected()) { ftp.disconnect(); } } catch (IOException e) { e.printStackTrace(); System.exit(1); } } public void ListFTP(FTPClient ftpClient, String path) { String gbkname; InputStream is = null; try { FTPFile[] files = ftpClient.listFiles(path); for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { if (!files[i].getName().equals(".") && !files[i].getName().equals("..")) { String tempDir = ftpClient.printWorkingDirectory() + "/" + files[i].getName(); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); gbkname = files[i].getName(); ftpClient.storeFile(new String(gbkname.getBytes("GBK"), "iso-8859-1"), is); countlevel(ftpClient.printWorkingDirectory()); System.out.println(level + gbkname); ftpClient.changeWorkingDirectory(tempDir); ListFTP(ftpClient, tempDir); ftpClient.changeToParentDirectory(); } } else { countlevel(ftpClient.printWorkingDirectory()); System.out.println(level + files[i].getName()); } } } catch (IOException e) { e.printStackTrace(); System.exit(1); } } public void countlevel(String path) { int n = 0; for (int i = 0; i < path.length(); i++) { if (path.charAt(i) == '/') n++; } if (n == 1 && path.length() == 1) { level = ""; } else { for (int j = 0; j < n; j++) { level += "--"; } } } public static void main(String[] args) throws Exception { GetFTP getFTP = new GetFTP(); FTPClient ftp = getFTP.loginFTP("192.168.30.77", "test001", "test001"); getFTP.ListFTP(ftp, ftp.printWorkingDirectory()); getFTP.ftpClose(ftp); } }