|
先去网上找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.isDirectory()) {
if (!files.getName().equals(".")
&& !files.getName().equals("..")) {
String tempDir = ftpClient.printWorkingDirectory()
+ "/" + files.getName();
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
gbkname = files.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.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);
}
}
|
|
|