Java-FTP上传下载
Posted ZhaoYang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-FTP上传下载相关的知识,希望对你有一定的参考价值。
Java-FTP上传下载
1 import lombok.extern.slf4j.Slf4j; 2 import org.apache.commons.net.ftp.FTPClient; 3 import org.apache.commons.net.ftp.FTPFile; 4 import org.apache.commons.net.ftp.FTPReply; 5 6 import java.io.*; 7 import java.net.SocketException; 8 9 /** 10 * FTP上传下载工具类 11 * 12 * @author zy 13 * @date 2020-07-13 15:35 14 */ 15 @Slf4j 16 public class FtpUtil { 17 18 /** 19 * 1、FTP连接登陆 20 * 21 * @param ftpClient FTP客户端 22 * @param userName 服务器FTP用户名 23 * @param passWord 服务器FTP用户名密码 24 * @param ip 服务器地址 25 * @param port FTP端口 26 */ 27 public static void login(FTPClient ftpClient, String userName, String passWord, String ip, int port) { 28 try { 29 ftpClient.connect(ip, port); 30 //登陆ftp服务器 31 ftpClient.login(userName, passWord); 32 //支持中文 33 //是否成功登录服务器 34 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 35 ftpClient.enterLocalPassiveMode(); 36 if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { 37 log.error("==========未连接到FTP:用户名或密码错误=========="); 38 ftpClient.disconnect(); 39 } else { 40 log.info("==========FTP连接成功=========="); 41 } 42 } catch (SocketException e) { 43 e.printStackTrace(); 44 log.error("==========FTP的IP地址可能错误,请正确配置。=========="); 45 } catch (IOException e) { 46 e.printStackTrace(); 47 log.error("==========FTP的端口错误,请正确配置==========。"); 48 } 49 } 50 51 /** 52 * 2、FTP文件上传 53 * 54 * @param directory 服务器目录 55 * @param ftpFileName 服务器文件名称 56 * @param filePath 本地文件地址 57 * @param userName 服务器FTP用户名 58 * @param passWord 服务器FTP用户名密码 59 * @param ip 服务器地址 60 * @param port FTP端口 61 * @return 是否成功 62 */ 63 public static boolean upload(String directory, String ftpFileName, String filePath, String userName, String 64 passWord, String ip, int port) { 65 66 boolean result = false; 67 FTPClient ftpClient = new FTPClient(); 68 69 try { 70 //连接ftp服务器 71 login(ftpClient, userName, passWord, ip, port); 72 //上传文件类型 二进制文件 73 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 74 ftpClient.changeWorkingDirectory(directory); 75 76 InputStream in = new FileInputStream(new File(filePath)); 77 ftpClient.storeFile(ftpFileName, in); 78 in.close(); 79 ftpClient.logout(); 80 ftpClient.disconnect(); 81 log.info("==========FTP文件上传成功=========="); 82 result = true; 83 } catch (IOException e) { 84 e.printStackTrace(); 85 } finally { 86 if (ftpClient.isConnected()) { 87 try { 88 ftpClient.disconnect(); 89 } catch (IOException e) { 90 e.printStackTrace(); 91 } 92 } 93 } 94 return result; 95 96 } 97 98 /** 99 * 3、FTP下载文件 100 * 101 * @param ftpFileName FTP文件名 102 * @param directory FTP相对路径 103 * @param localPath 下载文件路径 104 * @param userName FTP用户名 105 * @param passWord FTP用户名密码 106 * @param ip FTP地址 107 * @param port FTP端口 108 * @return 是否成功 109 */ 110 public static boolean downFile(String ftpFileName, String directory, String localPath, String userName, String 111 passWord, String ip, 112 int port) { 113 boolean result = false; 114 FTPClient ftpClient = new FTPClient(); 115 //连接ftp服务器 116 try { 117 login(ftpClient, userName, passWord, ip, port); 118 ftpClient.changeWorkingDirectory(directory); 119 FTPFile[] fs = ftpClient.listFiles(); 120 for (FTPFile ff : fs) { 121 if (ff.getName().equals(ftpFileName)) { 122 File localFile = new File(localPath + "/" + ff.getName()); 123 OutputStream is = new FileOutputStream(localFile); 124 ftpClient.retrieveFile(ff.getName(), is); 125 is.close(); 126 } 127 } 128 result = true; 129 ftpClient.logout(); 130 } catch (IOException e) { 131 e.printStackTrace(); 132 } finally { 133 if (ftpClient.isConnected()) { 134 try { 135 ftpClient.disconnect(); 136 } catch (IOException ioe) { 137 } 138 } 139 } 140 return result; 141 142 } 143 }
windows下ftp工具:
链接:https://pan.baidu.com/s/1SjbGt_fpNG_3QENmDFL_Xg
提取码:jh3r
以上是关于Java-FTP上传下载的主要内容,如果未能解决你的问题,请参考以下文章