关于Grails中FTP(apache)上传下载删除等功能的实现(二)

2014-11-24 10:21:41 · 作者: · 浏览: 2
要以"/"开头并且以"/"结束
* @param ftpClient ftp客户端
* @return
*/
def changeDirecroty(String remote,FTPClient ftpClient){
String directory = remote.substring(0,remote.lastIndexOf("/")+1);
if(!directory.equalsIgnoreCase("/")&&!ftpClient.changeWorkingDirectory(directory)){
int start=0;
int end = 0;
if(directory.startsWith("/")){
start = 1;
}else{
start = 0;
}
end = directory.indexOf("/",start);
while(true){
String subDirectory = remote.substring(start,end)
if(!ftpClient.changeWorkingDirectory(subDirectory)){
return false;
}

start = end + 1;
end = directory.indexOf("/",start);

//检查所有目录递归完毕
if(end <= start){
break;
}
}
}
return true
}
/**
* 读所传的路径,然后判断在FTP上面是否有该路径,没有则创建
* @param remote 路径如"/test/img/" 一定要以"/"开头并且以"/"结束
* @param ftpClient ftp客户端,通过connect()方法得到
* @return
*/
def createDirecroty(String remote,FTPClient ftpClient){
String directory = remote.substring(0,remote.lastIndexOf("/")+1);
if(!directory.equalsIgnoreCase("/")&&!ftpClient.changeWorkingDirectory(directory)){
int start=0;
int end = 0;
if(directory.startsWith("/")){
start = 1;
}else{
start = 0;
}
end = directory.indexOf("/",start);
while(true){
String subDirectory = remote.substring(start,end)
if(!ftpClient.changeWorkingDirectory(subDirectory)){
if(ftpClient.makeDirectory(subDirectory)){
ftpClient.changeWorkingDirectory(subDirectory);
}else {
System.out.println("创建目录失败");
return false;
}
}

start = end + 1;
end = directory.indexOf("/",start);

//检查所有目录是否创建完毕
if(end <= start){
break;
}
}
}
return true
}
/**
* 判断文件是否存在ftp服务器上
* @param remote 路径如"/test/img/" 一定要以"/"开头并且以"/"结束
* @param fileName
* @return
*/
def isExist(String filePath, String fileName){
Boolean success = false;
FTPFile[] files = null;
FTPClient client = null;
try {
client = connect()
changeDirecroty(filePath, client)
files = client.listFiles();
client.setFileType(FTP.BINARY_FILE_TYPE);
for (FTPFile f : files) {
if (f.getName().equals(fileName)) {
success = true;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (client != null) {
try {
client.lo