项目中,使用FTP做存储服务器,但是配置都没有错误,使用上传或下载到ftp的时候还是会报错。
断点显示这一行会抛出找不到文件夹的异常。
原因分析:传过来的descpath路径包含二级目录,类似于index/secendIndex这样,但FTPClien不支持创建二级目录,所以需要添加一个方法来创建路径。
添加一个创建函数:
public static FTPClient createDirctorys(FTPClient client,String desc) throws FTPIllegalReplyException, FTPAbortedException, FTPDataTransferException, IOException, FTPListParseException, FTPException {
String[] Dirctorys = desc.split("/");
for(int i = 0;i< Dirctorys.length;i++)
{
if (Dirctorys[i].equals(""))
{
continue;
}
//获取当前路径下所有的目录
String[] files = client.listNames();
List<String> fileNameList = Arrays.asList(files);
if (fileNameList.indexOf(Dirctorys[i]) != -1)
{
//如果存在,则切换
client.changeDirectory(Dirctorys[i]);
}else {
//如果不存在,则创建后在切换
client.createDirectory(Dirctorys[i]);
client.changeDirectory(Dirctorys[i]);
}
}
return client;
}
循环创建所有目录,进入对应目录。之后将client对象返回即可。调用函数处也需要对应更改为: