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上传下载的主要内容,如果未能解决你的问题,请参考以下文章

根据图片的url地址下载图片到本地保存代码片段

片段中的Firebase数据不是持久的,会重新下载

用于从 cloudkit 检索单列的代码模式/片段

16个必备的JavaScript代码片段

我无法从 firebase 获取下载网址()。请任何人帮助这是我的代码和错误。 (我正在使用片段)[重复]

VIM 代码片段插件 ultisnips 使用教程