项目在使用commons-net-3.3.jar这个包的时候,创建文件夹失败,但又没有任何报错,被这个问题困扰了好久,偶然发现了原因,竟然是因为FTP服务器不能创建多层目录,也就是FTP连接后一次只能创建一个文件夹,创建失败后返回False,但没有报错。下面自己测试中做的一次创建多层目录。
package kin.test;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class TestFile {
public static void main(String[] args) {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect("10.10.1.10", 21);
ftpClient.login("test", "test");
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
System.out.println("FTP server refused connection");
ftpClient.disconnect();
}
// 切换到根目录
ftpClient.changeWorkingDirectory("/");
String path = "201708/week2/GD/UPLOAD";
String[] pah = path.split("/");
// 分层创建目录
for (String pa : pah) {
System.out.println(pa);
ftpClient.makeDirectory(pa);
// 切到到对应目录
ftpClient.changeWorkingDirectory(pa);
}
if (ftpClient != null && ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
System.out.println("FTP服务器关闭连接!");
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
这里是测试代码当然方法就是对路径进行切分了。