java ftp客戶端
发布时间:2020-12-15 03:21:58 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 apache commons-net可以很方便的实现,但是这个第三方包中对文件夹的删除与创建(级联)操作并不是特别的方便。删除文件夹必须保证该文件夹下没有任何
|
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
apache commons-net可以很方便的实现,但是这个第三方包中对文件夹的删除与创建(级联)操作并不是特别的方便。删除文件夹必须保证该文件夹下没有任何 文件,创建文件夹也必须要求父文件夹存在。为了方便以后使用方便,对其进行了简单的封装,主要针对删除与文件夹创建。代码如下:
package cn.androiddevelop.io;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
/**
* ftp客户端
*
* @author Yuedong Li
*
*/
public class FtpClient {
private FTPClient client;
public FtpClient(String host,String userName,String password)
throws SocketException,IOException {
initFtpClient(host,21,userName,password);
}
public FtpClient(String host,int port,port,password);
}
/**
* 登录
*
* @param host
* @param port
* @param userName
* @param password
* @throws SocketException
* @throws IOException
*/
public void initFtpClient(String host,String password) throws SocketException,IOException {
client = new FTPClient();
client.connect(host,port);
client.login(userName,password);
}
/**
* 得到所有目录
*
* @param remotePath
* @return
* @throws IOException
*/
public FTPFile[] listFiles(String remotePath) throws IOException {
if (client == null)
return null;
client.changeWorkingDirectory(remotePath);
return client.listFiles();
}
/**
* 上传
*
* @param localPath
* 本地路径
* @param remotePath
* ftp路径
* @return 上传是否成功
* @throws IOException
*/
public boolean upload(String localPath,String remotePath)
throws IOException {
if (client == null)
return false;
boolean res = false;
FileInputStream fileInputStream = new FileInputStream(localPath);
int index = remotePath.lastIndexOf('/');
if (index != -1) {
client.setFileType(FTP.BINARY_FILE_TYPE);
client.changeWorkingDirectory(remotePath.substring(0,index));
res = client.storeFile(remotePath.substring(index + 1),fileInputStream);
}
fileInputStream.close();
return res;
}
/**
* 下载
*
* @param remotePath
* ftp路径
* @param localPath
* 本地路径
* @return 下载是否成功
* @throws IOException
*/
public boolean download(String remotePath,String localPath)
throws IOException {
if (client == null)
return false;
boolean res = false;
FileOutputStream fileOutputStream = new FileOutputStream(localPath);
res = client.retrieveFile(remotePath,fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
return res;
}
/**
* 删除文件
*
* @param remotePath ftp端路径
* @return
* @throws IOException
*/
public boolean delete(String remotePath) throws IOException {
if (client == null)
return false;
return client.deleteFile(remotePath) || deleteDirectory(remotePath);
}
/**
* 创建目录
*
* @param remotePath
* @throws IOException
*/
public boolean makeDirectory(String remotePath) throws IOException {
if (client == null)
return false;
String[] item = remotePath.split("/");
String currentPath = "";
for (int i = 0; i < item.length - 1; i++) {
currentPath = currentPath + "/" + item[i];
client.makeDirectory(currentPath);
}
return client.makeDirectory(remotePath);
}
/**
* 删除文件
*
* @param remotePath ftp端路径
* @return
* @throws IOException
*/
private boolean deleteDirectory(String remotePath) throws IOException {
FTPFile[] files = listFiles(remotePath);
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
deleteDirectory(remotePath + "/" + files[i].getName());
} else {
client.deleteFile(remotePath + "/" + files[i].getName());
}
}
return client.removeDirectory(remotePath);
}
/**
* 重命名
*
* @param remoteOldPath
* @param remoteNewPath
* @return
* @throws IOException
*/
public boolean rename(String remoteOldPath,String remoteNewPath)
throws IOException {
if (client == null)
return false;
return client.rename(remoteOldPath,remoteNewPath);
}
/**
* 退出登录
*
* @throws IOException
*/
public void close() throws IOException {
if (client != null)
client.logout();
}
}
以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
