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

本文深入探讨了FTP客户端的基本操作,并通过一个简单的类封装了常见的FTP操作,包括连接、登录、上传文件、删除文件及切换目录。通过实例演示如何使用封装后的FTP客户端类进行FTP操作,简化了实际应用中的编码工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近经常用到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();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值