您的位置:首页 > 编程语言 > Java开发

java的FTP客户端上传、下载、删除等

2014-11-04 18:28 316 查看
最近经常用到FTP操作一些文件,越发觉得FTP协议是多么的好用。

因为最近一直写的是FTP客户端的操作,所以本文只讲一些客户端的常用操作,以后如果用到server的话,再补充server版的。

不废话了,直接贴代码,代码都是很好理解的,注释也很详细。

FTP apache jar包:http://commons.apache.org/proper/commons-net/download_net.cgi

public class FTPClientUtil {
public FTPClient ftpClient;
private String ip;
private int port;
private String username;
private String password;

public FTPClientUtil(String ip, int port, String username, String password) {
this.ip = ip;
this.port = port;
this.username = username;
this.password = password;
ftpClient = new FTPClient();
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
}

private boolean connect() throws SocketException, IOException {
boolean isConnect = false;
ftpClient.connect(ip, port);
isConnect = ftpClient.login(username, password);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
return isConnect;
}

/**
* 上传文件或文件夹,可直接使用此方法上传无需连接登陆
*
* @param remoteFilename
* @param localFile
* @throws IOException
* @throws SocketException
* @return
*/
public boolean uploadFile(String remoteFilename, File localFile) throws SocketException, IOException {
if (!ftpClient.isConnected()) {
connect();
}
boolean isUpload = false;
if (localFile.isDirectory()) {
ftpClient.makeDirectory(localFile.getName());
ftpClient.changeWorkingDirectory(localFile.getName());
File[] files = localFile.listFiles();
for (File f : files) {
uploadFile(f.getName(), f);
}
} else if (localFile.isFile()) {
InputStream is = new FileInputStream(localFile);
isUpload = ftpClient.storeFile(remoteFilename, is);
is.close();
}
return isUpload;
}

/**
* 删除文件,可直接使用此方法删除无需连接登陆
*
* @param pathname
* @return
* @throws IOException
* @throws SocketException
*/
public boolean delFile(String pathname) throws SocketException, IOException {
if (!ftpClient.isConnected()) {
connect();
}
boolean isDel = false;
isDel = ftpClient.deleteFile(pathname);
return isDel;
}

/**
* 跳转目录,可直接使用此方法无需连接登陆 如跳转的文件夹不存在,则创建
*
* @param pathname
* @return
* @throws IOException
*/
public boolean changeWorkingDirectory(String pathname) throws SocketException, IOException {
if (!ftpClient.isConnected()) {
connect();
}
boolean result = false;
result = ftpClient.changeWorkingDirectory(pathname);
// 跳转失败则创建文件夹
if (!result) {
ftpClient.makeDirectory(pathname);
result = ftpClient.changeWorkingDirectory(pathname);
}
return result;
}
}

下面是使用的一个例子

 只是将FTP客户端的操作简单封装了一下,构造函数填入参数,然后直接使用方法上传、下载操作了。

将连接、登录封装到里面,也是因为FTP连接是有超时的,每次用同一个对象上传时也就不用在判断连接是否断开了,有连接就用原来的连接,没有则重新创建,简化了操作

File file=new File("路径");
FTPClientUtil ftp=new FTPClientUtil("127.0.0.1",21,"test","test");
ftp.uploadFile(file.getname,file);
ftp.logout();
ftp.disconnect();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: