我们采用的apache封装的FTP,
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPReply;
这是apache封装FTP相关的引入
====================================================
类名为:FtpUtil
private FTPClient ftpClient = null;
private String hostname;
private int port;
private String username;
private String password;
private String remoteDir;
//构造方法
public FtpUtil(String hostname, int port, String username, String password, String remoteDir){
this.hostname = hostname;
this.port = port;
this.username = username;
this.password = password;
this.remoteDir = remoteDir;
if(remoteDir==null) {
remoteDir = "/";
}
}
//登录
/**
* FTP登陆
* @throws IOException
*/
public void login() throws Exception{
ftpClient = new FTPClient();
ftpClient.configure(getFTPClientConfig());
ftpClient.setDefaultPort(port);
ftpClient.setControlEncoding("UTF-8");
ftpClient.connect(hostname);
if(!ftpClient.login(username, password)){
throw new Exception("FTP登陆失败,请检测登陆用户名和密码是否正确!");
}
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.changeWorkingDirectory(remoteDir);
}
/**
* 得到配置
* @return
*/
private FTPClientConfig getFTPClientConfig() {
// 创建配置对象
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh");
return conf;
}
/**
* 关闭FTP服务器
*/
public void closeServer(){
try{
if(ftpClient!=null){
ftpClient.logout();
ftpClient.disconnect();
}
}catch(IOException e){
e.printStackTrace();
}
}
/**
* 链接是否已经打开
* @return
*/
public boolean serverIsOpen(){
if(ftpClient==null){
return false;
}
return !ftpClient.isConnected();
}
/**
* 列表FTP文件
* @param regEx
* @return
*/
public String[] listFiles(String regEx){
String[] names;
try{
names = ftpClient.listNames(regEx);
if(names == null) return new String[0];
return names;
}catch(IOException e){
e.printStackTrace();
}
return new String[0];
}
/**
* 取得FTP操作类的句柄
* @return
*/
public FTPClient getFtpClient() {
return ftpClient;
}
/**
* 上传
* @throws Exception
*/
public boolean upload(String localFilePath, String remoteFilePath)throws Exception {
boolean state = false;
File localFile = new File(localFilePath);
if(!localFile.isFile()||localFile.length()==0){
return state;
}
FileInputStream localIn = new FileInputStream(localFile);
state = this.upload(localIn, remoteFilePath);
localIn.close();
return state;
}
/**
* 上传
* @throws Exception
*/
public boolean upload(InputStream localIn, String remoteFilePath)throws Exception {
this.createDir(new File(remoteFilePath).getParent());
boolean result = ftpClient.storeFile(remoteFilePath, localIn);
return result;
}
/**
* 是否存在FTP目录
* @param dir
* @param ftpClient
* @return
*/
public boolean isDirExist(String dir) {
try {
int retCode = ftpClient.cwd(dir);
return FTPReply.isPositiveCompletion(retCode);
} catch (Exception e) {
return false;
}
}
/**
* 创建FTP多级目录
* @param remoteFilePath
* @throws IOException
*/
public void createDir(String dir) throws IOException{
if(!isDirExist(dir)){
File file = new File(dir);
this.createDir(file.getParent());
ftpClient.makeDirectory(dir);
}
}
/**
* 删除文件
* @param remoteFilePath
*/
public boolean delFile(String remoteFilePath) {
try {
return ftpClient.deleteFile(remoteFilePath);
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
/**
* 下载
* @throws Exception
*/
public void download(String localFilePath, String remoteFilePath)throws Exception {
OutputStream localOut = new FileOutputStream(localFilePath);
this.download(localOut, remoteFilePath);
localOut.close();
}
/**
* 下载
* @throws Exception
*/
public void download(OutputStream localOut, String remoteFilePath)throws Exception {
boolean result = ftpClient.retrieveFile(remoteFilePath, localOut);
if (!result) {
throw new Exception("文件下载失败!");
}
}
分享到:
相关推荐
在`TestFtpUpload`文件中,可以编写单元测试或集成测试来验证FTP上传和下载功能。例如,你可以创建一个测试类`FtpOperationsTest`,包含如下方法: ```java import org.junit.jupiter.api.Test; import org.apache....
在Java中实现FTP上传和下载,我们可以利用Apache Commons Net库,它提供了一系列的FTP客户端API,方便我们进行文件操作。以下是对这个主题的详细讲解: 一、Apache Commons Net库介绍 Apache Commons Net是Apache...
这篇博客“Java实现FTP上传与下载”可能详细介绍了如何利用Java来实现FTP客户端的功能,包括文件的上传和下载。这里我们将深入探讨Java中实现FTP操作的核心知识点。 首先,Java通过`commons-net`库提供了对FTP的...
总的来说,使用Java实现FTP上传和下载涉及网络通信、文件操作和错误处理等多个方面的知识。通过"ftpLoadDown.jar"库,我们可以简化这个过程,使得开发者可以专注于业务逻辑,而无需关心底层的FTP协议细节。在实际...
Java 实现 FTP 自动上传文件是一项常见的任务,尤其在自动化部署、数据同步...总的来说,通过Java实现FTP自动上传文件涉及到网络通信、文件操作、日志处理等多个方面,理解这些概念对于Java开发者来说是非常重要的。
总结来说,Java实现FTP上传下载涉及连接管理、文件操作、多线程处理、异常处理等多个方面。使用Apache Commons Net库能简化这些操作,但正确地处理细节和异常情况仍然至关重要。通过理解和实践这些知识点,你将能够...
本项目提供了一套完整的Java实现FTP操作的代码示例,包括上传、下载、删除服务器上的指定文件以及断点续传功能。以下是对这些功能的详细解释: 1. **FTP连接与登录**: 在进行任何FTP操作之前,首先需要建立一个...
3. **文件操作**:FTP支持文件的打开、关闭、上传(put)、下载(get)等操作。 #### 构建Java FTP服务器的核心步骤 构建Java FTP服务器涉及到几个关键步骤: 1. **初始化服务器**:设置服务器监听的端口,通常为...
总的来说,Java实现FTP功能涉及到网络通信、文件I/O以及GUI交互等多个方面,通过适当的库支持可以高效地完成文件的上传和下载任务。在实际开发中,还需要考虑错误处理、安全性、性能优化等更多因素。
在Java中实现FTP(文件传输协议)上传和下载文件功能,通常会使用Apache Commons Net库。这个库提供了FTPClient类,使得与FTP服务器交互变得简单。以下是对代码中涉及的知识点的详细解释: 1. **Apache Commons Net...
Java作为多平台支持的编程语言,提供了丰富的库和工具来实现FTP功能,包括下载、上传文件以及定时监控等操作。本篇文章将深入探讨如何使用Java进行FTP文件传输,并涉及自动解压和压缩的功能。 首先,让我们关注Java...
在Java中,我们可以使用Apache Commons Net库来处理FTP相关操作,如连接、登录、上传和下载文件等。 1. **Apache Commons Net库**:这是Java开发人员常用的FTP客户端库,提供了丰富的API来处理FTP操作。要使用它,...
本教程将详细介绍如何使用Java实现文件上传到FTP服务器,这适用于初学者熟悉FTP客户端编程的基础概念。 首先,我们要了解FTP的基本工作原理。FTP允许客户端连接到服务器,发送文件,接收文件,或者列出服务器上的...
本文将详细介绍如何使用Java实现FTP上传功能,并探讨相关知识点。 首先,要进行FTP操作,我们需要一个Java FTP客户端库。Java标准库并不直接支持FTP,但提供了`java.net.Socket`类,可以通过它构建低级别的FTP连接...
FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。断点续传是FTP的一个重要特性,允许用户在文件...了解这些知识点将使你能够高效地实现在Java环境中进行FTP文件的断点续传操作。
以下是关于使用Java实现FTP批量大文件上传下载的相关知识点: 1. **FTP基础知识**: - FTP是File Transfer Protocol的缩写,它允许用户在Internet上发送和接收文件。 - FTP使用TCP作为传输层协议,并且基于客户-...
总结来说,Java中的多线程FTP上传和下载涉及网络通信、多线程编程以及错误处理等多个方面。Apache Commons Net库提供了便利的API,使得开发者可以高效地实现这些功能。在实践中,要注意线程安全和异常处理,以确保...