如何遍历ftp目录
1、遍历ftp目录中的文件
2、public static void main(String[] args) throws IOException {
FTPClient ftpClient = new FTPClient();
try {
// 连接FTP服务器
ftpClient.connect("100.101.1.101", 21);//地址,端口号
// 登录FTP服务器
ftpClient.login("root", "admin");//用户名,密码
// 验证FTP服务器是否登录成功
ftpClient.setControlEncoding("UTF-8");
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("登录失败");
return;
}else{
System.out.println("登录成功");
}
//根目录 登录到ftp后,所在的目录即是根目录,直接即可遍历文件
FTPFile[] files = ftpClient.listFiles();
for(FTPFile file: files){
System.out.println(file.getName());
}
// 切换目录 想要遍历那个目录的文件,先要切换目录(切换目录实际就是进入目录),进到目录之后再进行遍历
if(!ftpClient.changeWorkingDirectory("/transactionDetail")){
System.out.println("切换目录失败");
return;
}else{
FTPFile[] fileDic = ftpClient.listFiles();
for(FTPFile f: fileDic){
System.out.println(f.getName());
}
}
ftpClient.logout();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.logout();
} catch (IOException e) {
}
}
}
}
3、读取(下载)ftp中的文件
4、public static void main(String[] args) throws IOException {
FTPClient ftpClient = new FTPClient();
OutputStream out = null;
InputStream in = null;
try {
// 连接FTP服务器
ftpClient.connect("100.101.1.101", 21);
// 登录FTP服务器
ftpClient.login("root", "admin");
// 验证FTP服务器是否登录成功
ftpClient.setControlEncoding("UTF-8");
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("登录失败");
}else{
System.out.println("登录成功");
}
// 切换目录
if(!ftpClient.changeWorkingDirectory("/book_detail")){
System.out.println("切换目录失败");
}else{
in = new FileInputStream("detail-2020-02-20-xls.zip");//读取目录中的文件
//创建本地文件
File tmpFile = new File("D:" + File.separator + "route" + File.separator + "detail-2020-02-20-xls.zip");
if (!tmpFile.getParentFile().exists()) {
tmpFile.getParentFile().mkdirs();//创建目录
}
if(!tmpFile.exists()) {
tmpFile.createNewFile();//创建文件
}
out = new FileOutputStream(tmpFile);
// 创建字节数组
byte[] temp = new byte[1024];
int length = 0;
// 源文件读取一部分内容
while ((length = in.read(temp)) != -1) {
// 目标文件写入一部分内容
out.write(temp, 0, length);
}
in.close();
out.close();
System.out.println("写入本地成功");
}
ftpClient.logout();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.logout();
} catch (IOException e) {
}
}
}
}