importjava.io.IOException;importjava.io.InputStream;importorg.apache.commons.net.ftp.FTPClient;importorg.apache.commons.net.ftp.FTPFile;public classGetFTP {//用来打印的时候分层
public String level = "";publicFTPClient loginFTP(String host, String user, String pass)throwsIOException {
FTPClient ftp= newFTPClient();
ftp.setControlEncoding("GBK");
ftp.connect(host,21);
ftp.login(user, pass);returnftp;
}public voidftpClose(FTPClient ftp) {try{
ftp.logout();if(ftp.isConnected()) {
ftp.disconnect();
}
}catch(IOException e) {
e.printStackTrace();
System.exit(1);
}
}public voidListFTP(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 voidcountlevel(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) throwsException {
GetFTP getFTP= newGetFTP();
FTPClient ftp= getFTP.loginFTP("192.168.30.77", "test001", "test001");
getFTP.ListFTP(ftp, ftp.printWorkingDirectory());
getFTP.ftpClose(ftp);
}
}