十年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);
}
}


}

猜你喜欢

转载自blog.csdn.net/weixin_43485737/article/details/131675382