十年JAVA搬砖路——FTP服务器下载文件

十年JAVA搬砖路——FTP服务器下载文件

简单叙述

FTP协议和HTTP协议是两种不同的网络协议,它们在功能和用途上有一些区别。

  1. 功能:FTP协议主要用于文件传输,允许用户在客户端和服务器之间上传、下载和管理文件。HTTP协议则用于在Web浏览器和Web服务器之间传输超文本文档,即用于浏览网页和获取网页内容。
  2. 端口:FTP协议使用默认的端口号21进行通信,而HTTP协议使用默认的端口号80。
  3. 连接方式:FTP协议使用两个独立的连接,一个用于控制命令,另一个用于数据传输。HTTP协议使用单个连接进行通信。
  4. 认证方式:FTP协议支持多种身份验证方式,包括用户名和密码、匿名登录等。HTTP协议通常使用基本身份验证或表单身份验证。
  5. 数据传输方式:FTP协议支持两种数据传输模式,即主动模式和被动模式。HTTP协议使用请求-响应模式进行数据传输。
    总的来说,FTP协议更适合用于文件传输和管理,而HTTP协议更适合用于浏览网页和获取网页内容。

Maven依赖

<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>

Demo类

@Slf4j
publicclassFTPUtils{

@Data
privateclassFtpConfig{
privatefinalStringserver="127.0.0.1";
privatefinalIntegerport=2121;
privatefinalStringusername="admin";
privatefinalStringpassword="123456@2022";
}

/**
*创建FTP链接
*
*@return
*/
privatesynchronizedFTPClientgetFtpClient(){
try{
FTPClientftpClient=newFTPSClient();
FtpConfigftpConfig=newFtpConfig();
ftpClient.connect(ftpConfig.getServer(),ftpConfig.getPort());
ftpClient.login(ftpConfig.getUsername(),ftpConfig.getPassword());
ftpClient.setControlEncoding("GBK");
if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
returnftpClient;
}else{
log.error("FTPserverconnecterror.code={},message={}",ftpClient.getReplyCode(),ftpClient.getReplyString());
}
returnftpClient;
}catch(IOExceptione){
thrownewRuntimeException(e);
}
}

/**
*循环遍历全部文件
*/
privatevoidtraverseDirectories(FTPClientftpClient,StringparentDir)throwsIOException{
FTPFile[]files=ftpClient.listFiles(parentDir);
for(FTPFilefile:files){
StringcurrentFileName=file.getName();
StringcurrentFilePath=parentDir+"/"+currentFileName;
if(file.isDirectory()){
traverseDirectories(ftpClient,currentFilePath);
}else{
System.out.println(currentFileName);
}
}

}

/**
*单个文件下载
*/
privatevoidsingDownLoad()throwsIOException{
FTPClientftpClient=getFtpClient();
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
Filefile=newFile("/");
FileOutputStreamoutputStream=newFileOutputStream(file);
ftpClient.retrieveFile("/ody_backup/FTP_Backup/data/testing3/CP/EPH8611-M2/C2000-1_D408A_V1P11_8site_CP1_WBISK1QP-13_230621_1329.std.gz",outputStream);
ftpClient.logout();
ftpClient.disconnect();
}

publicstaticvoidmain(String[]args){
FTPUtilsftpUtils=newFTPUtils();
FTPClientftpClient=ftpUtils.getFtpClient();
try{
ftpUtils.traverseDirectories(ftpClient,"/ody_backup/FTP_Backup/data/testing6");
ftpUtils.singDownLoad();
}catch(IOExceptione){
thrownewRuntimeException(e);
}
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值