import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FtpManager {
private static FTPClient ftpClient = new FTPClient();
private static boolean isSuccess = false;
/**
* 连接并登录到ftp服务器
* @param ftpUrl:远程ftp地址
* @param port:端口号,默认为21
* @param loginName:登录名称
* @param passWord:登录密码
* @param remotePath:远程目录
* @return
*/
public static boolean connect(String ftpUrl,int port,String loginName,String passWord,String remotePath){
int replyCode = 0;
try {
//设置编码格式,防止文件名称中出现中文乱码
ftpClient.setControlEncoding("UTF-8");
//连接ftp服务器
ftpClient.connect(ftpUrl, port);
replyCode = ftpClient.getReplyCode();
if(FTPReply.isPositiveCompletion(replyCode)){
//验证登录
if(ftpClient.login(loginName, passWord)){
isSuccess = true;
}
}else{
ftpClient.disconnect();
}
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE); // 设置上传文件以二进制上传
//切换到ftp服务器当前的工作目录
ftpClient.changeWorkingDirectory(remotePath);
} catch (IOException e) {
return isSuccess;
}
return isSuccess;
}
/**
* 将本地文件上传到远程ftp服务器
* @param ftpUrl:远程ftp地址
* @param port:端口号,默认为21
* @param loginName:登录名称
* @param passWord:登录密码
* @param remotePath:保存上传文件的远程工作目录
* @param localFile:本地要上传的文件,包含路径信息
*/
public static void uploadFile(String ftpUrl,int port,String loginName,String passWord,String remotePath,String localFile){
File remoteFile = null;
//上传的文件名称,不能包含路径信息,否则无法上传成功
String remoteFileName = "";
InputStream inputStream = null;
boolean success = connect(ftpUrl,port,loginName,passWord,remotePath);
if(success){
try {
remoteFile = new File(localFile);
remoteFileName = remoteFile.getName(); // 设置远程文件名
inputStream = new FileInputStream(remoteFile);
//开始上传
ftpClient.storeFile(remoteFileName,inputStream);
inputStream.close();
ftpClient.logout();
} catch (IOException e) {
throw new RuntimeException(e);
}finally {
closeConnect();
}
}else{
}
}
/**
* 从远程ftp服务器上下载文件
* @param ftpUrl:远程ftp地址
* @param port:端口号,默认为21
* @param loginName:登录名称
* @param passWord:登录密码
* @param remotePath:远程工作目录
* @param remoteFileName:要下载的远程文件名,不含路径信息
* @param localPath:保存下载文件的本地目录
*/
public static void downloadFile(String ftpUrl,int port,String loginName,String passWord,String remotePath,String localPath){
File localFile = null;
OutputStream outputStream = null;
boolean success = connect(ftpUrl,port,loginName,passWord,remotePath);
if(success){
try {
//获取当前目录下所有的文件名称,不包含子目录
String[] fileNames = ftpClient.listNames();
for(String fileName:fileNames){
localFile = new File(localPath+File.separator+fileName); // File.separator = "\"
outputStream = new FileOutputStream(localFile);
//开始下载
ftpClient.retrieveFile(fileName,outputStream);
//下载完成后删除该文件
//ftpClient.deleteFile(file);
outputStream.close();
}
ftpClient.logout();
} catch (IOException e) {
throw new RuntimeException(e);
}finally {
closeConnect();
}
}else{
System.out.println("ftp连接失败,请检查用户名和密码是否正确");
}
}
/**
* 关闭与ftp服务器的连接
*/
public static void closeConnect(){
try {
if (ftpClient != null && ftpClient.isConnected()) {
ftpClient.disconnect();
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if(ftpClient != null && ftpClient.isConnected()){
ftpClient.disconnect();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
public static void main(String[] args){
downloadFile(ip,21,username,password,/images/,E:);
uploadFile(ip,21,username,password,/images/,d:/aa.gif); // 远程路径要写相对
}
}
相关推荐
FTP demo, FTP client access to FTP server, anh upload/download file.
FTP(File Transfer Protocol)则是用于在网络之间传输文件的标准协议。本教程将深入探讨如何结合Java、JSP和FTP来实现文件的上传与下载功能,这对于构建具有文件管理功能的Web应用至关重要。 首先,我们需要理解...
- `upload(File localFile, String remotePath)`:将本地文件上传到FTP服务器。 - `download(String remoteFile, File localFile)`:从服务器下载文件到本地。 5. **文件传输模式**:FTP有ASCII和二进制两种模式...
在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download)。FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户...
FTP(File Transfer Protocol)是互联网上一种用于在不同主机间传输文件的标准协议。在C#环境中,我们可以利用.NET Framework或.NET Core提供的FTP相关的类库来实现FTP服务器和客户端的功能。本压缩包“FTP.zip”...
在“FTP.c”源代码中,我们可以预期看到处理这些命令和连接的函数,例如`send_command()`用于发送FTP命令,`create_data_connection()`用于建立数据连接,`upload_file()`和`download_file()`函数分别对应文件的上传...
FTP(File Transfer Protocol)是互联网上用于在不同计算机之间传输文件的标准协议。C#是一种广泛应用于Windows平台的面向对象的编程语言,它提供了丰富的库来支持FTP操作。在这个"FTP.rar"压缩包中,我们看到它包含...
- `download.avi` 和 `upload.avi` 可能是示例视频文件,用于演示FTP的下载和上传功能。 - `ftpdel.avi` 可能是一个演示删除文件的示例视频。 - `makesetp.bat` 可能是一个批处理文件,用于设置环境或运行FTP程序。 ...
FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。在Java开发环境中,如果需要实现FTP客户端功能,可以借助第三方类库,如`ftp4j`。`ftp4j`是一个功能丰富的Java FTP客户端库,...
在成功连接并登录后,你可以使用`cwd()`方法改变当前工作目录,`ls()`(在某些FTP库中可能是`nlst()`)来列出目录内容,`upload()`或`storbinary()`上传文件,`download()`或`retrbinary()`下载文件,以及`quit()`来...
1. **FTP类库**:VB中的`Microsoft.VisualBasic.PowerPacks.FTP`库提供了FTP相关的类和方法,如`FtpConnection`对象用于建立与FTP服务器的连接,`FtpFile`对象表示FTP服务器上的文件。 2. **连接设置**:要连接到...
FTP是一种用于在网络上进行文件传输的标准协议,它支持上传(Upload)和下载(Download)功能,是互联网早期的重要组成部分之一。接下来,我们将深入分析如何使用Java来构建一个基本的FTP服务器。 #### FTP协议的...
在IT行业中,FTP(File Transfer Protocol)客户端是一个用于在计算机之间传输文件的工具。这个名为"NowUsingv1.1.rar"的压缩包提供了一个FTP客户端的C++实现,重点在于其封装在一个简洁而稳定的类中,名为...
这个"FTP.rar_ftp"文件包包含了一个关于如何使用Java实现FTP功能的源代码示例,对于学习和理解FTP协议以及Java编程实践是非常有价值的。 FTP协议主要有两个工作模式:主动模式(Active Mode)和被动模式(Passive ...
FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件的传输。在C#编程语言中,我们可以利用FTP来实现文件的上传和下载功能,构建FTP工具。本项目是一个基于C#的FTP工具,它包含了文件夹...
6. **文件传输**:FTPClient提供了upload和download方法来上传和下载文件。例如,上传本地文件到FTP服务器: ```java FileInputStream fis = new FileInputStream("localfile.txt"); ftpClient.storeFile("remote...
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
Java FTP上传下载是Java编程中一个常见的网络操作,主要用于在本地计算机和远程FTP服务器之间交换文件。FTP(File Transfer Protocol)是一种应用层协议,用于在Internet上可靠地传输文件。在Java中,我们可以使用`...
def download_file(ftp, remote_path, local_path): with open(local_path, 'wb') as file: ftp.retrbinary(f'RETR {remote_path}', file.write) ``` 为了实现自动化,我们可以创建一个主函数,根据用户的需求...
这个类可能包含构造函数来处理连接和登录,方法如`download`、`upload`、`createDirectory`和`deleteDirectory`等,以面向对象的方式封装FTP操作。 总之,PHP的FTP功能强大且易于使用,能帮助开发者实现各种FTP相关...