3行代码实现ftp 上传、下载、删除操作集合
生活随笔
收集整理的這篇文章主要介紹了
3行代码实现ftp 上传、下载、删除操作集合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為了幫助小伙伴們便捷操作ftp,現對常用的上傳、下載、刪除功能進行封裝,小伙伴只需要傳入需要的參數操作即可!告訴小伙伴好消息,本項目我已開源,大家可以根據需要克隆run起來!!!
文章目錄
- 一、集合總覽
- ① 上傳集合
- ② 下載集合
- ③ 刪除集合
- 二、配置總覽
- ① pom依賴
- ② 全局配置文件application.yml
- ③ dev環境配置文件
- ④ ftp基礎參數配置類BaseConfig
- ⑤ ftp公用工具類
- 三、ftp實戰
- ① 下載集合測試
- ② 上傳集合測試
- ③ 刪除集合測試
- 項目源碼:
一、集合總覽
① 上傳集合
| uploadLocalDirToRemotePath | 上傳本地文件夾至遠程目錄(已封裝) |
| uploadLocalDirFiletListToRemoteDir | 上傳本地目錄下文件列表至遠程目錄(已封裝) |
| uploadLocalSpFileToRemotePath | 上傳本地指定文件至遠程目錄(已封裝) |
| uploadLocalSpFileTypeToRemotePath | 上傳本地指定文件類型的文件至遠程目錄(已封裝) |
| uploadLocalSpFileNameContainStrToRemotePath | 上傳本地指定文件名包含指定字符串的文件至遠程目錄(已封裝) |
| uploadLocalDirFileNameSpPrefixFileList | 上傳本地指定文件名前綴的文件至遠程目錄(已封裝) |
② 下載集合
| downloadRemoteDirAppointFile | 下載遠程目錄下指定文件至本地目錄(已封裝) |
| downloadFTPDirAppointFileTypeList | 下載遠程目錄下面的某個類型的文件列表(已封裝) |
| downloadFTPDirFileContainInputStrList | 下載遠程目錄下面的文件名包含指定字符串的文件列表(已封裝) |
| downloadFTPDirFileNameprefixList | 下載遠程目錄下面的指定文件前綴的文件列表(已封裝) |
| downloadAllFilesInTheRemoteDirectory | 下載遠程目錄下的文件列表(已封裝) |
| downloadRemoteFolders | 下載遠程文件夾至本地目錄(已封裝) |
③ 刪除集合
| delteRemoteAppointDirFileList | 刪除遠程指定目錄下的所有文件(已封裝) |
| delteRemoteAppointFile | 刪除遠程指定文件(已封裝) |
| delteRemoteAppointFileTypeList | 刪除遠程指定目錄下的指定文件類型的文件列表(已封裝) |
| delteRemoteAppointFilePrefixList | 刪除遠程指定目錄下的指定文件名前綴的文件列表(已封裝) |
| delteRemoteFileNameContainInptStrList | 刪除遠程指定目錄下的文件名包含指定字符串的文件列表(已封裝) |
二、配置總覽
① pom依賴
<dependencies><!--springMVC啟動器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--文件上傳--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.3</version></dependency><!--實體工具類--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--日志打印--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>② 全局配置文件application.yml
#端口 server:port: 80 # 激活環境配置 spring:profiles:active: dev③ dev環境配置文件
########################################################################### # IP地址 用戶名 密鑰 端口 本地保存路徑 遠程下載目錄 遠程指定文件 指定的文件類型 指定文件名 # 文件名中指定字符串 文件名前綴 本地文件同步目錄 遠程上傳目錄 遠程刪除目錄 ############################################################################ ftp:ipAddress: 192.168.55.12 #IP地址userName: ftpuser #用戶名passWd: cx01 #密鑰port: 21 #端口localSaveDir: #本地保存路徑remoteDownLoadDir: #遠程下載目錄remoteDirAppointFile: #遠程指定文件fileType: #指定的文件類型appointFileName: #指定文件名inputStr: #文件名中指定字符串fileNamePrefix: #文件名前綴localSyncFileDir: #本地文件同步目錄romoteUpLoadePath: #遠程上傳目錄romoteDelPath: #遠程刪除目錄④ ftp基礎參數配置類BaseConfig
package com.gblfy.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;/*** @author gblfy* @ClassNme BaseConfig* @Description TODO* @Date 2020/1/3 13:53* @version1.0*/ @Data @Component @ConfigurationProperties(prefix = "ftp") public class BaseConfig {/***IP地址*/private String ipAddress;/***用戶名*/private String userName;/***密鑰*/private String passWd;/***端口*/private int port;/***本地保存路徑*/private String localSaveDir;/***遠程目錄*/private String remoteDownLoadDir;/***遠程指定文件*/private String remoteDirAppointFile;/***文件類型*/private String fileType;/***指定的文件名*/private String appointFileName;/***指定字符串*/private String inputStr;/***文件名前綴*/private String fileNamePrefix;/***本地同步的目錄*/private String localSyncFileDir;/***遠程同步的目錄*/private String romoteUpLoadePath;/***刪除遠程的目錄*/private String romoteDelPath; }⑤ ftp公用工具類
package com.gblfy.utils;import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; import org.apache.log4j.Logger; import org.springframework.web.multipart.MultipartFile;import java.io.*; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.TimeZone;public class FTPEnhUtils {private FTPClient ftpClient;private String strIp;private int intPort;private String user;private String password;private String mFtpPath;private static Logger logger = Logger.getLogger(FTPEnhUtils.class.getName());/*** 路徑get方法** @return* @author guobin*/public String getmFtpPath() {return mFtpPath;}/*** 路徑set方法** @param mFtpPath* @author guobin*/public void setmFtpPath(String mFtpPath) {this.mFtpPath = mFtpPath;}// Ftp構造函數public FTPEnhUtils(String strIp, int intPort, String user, String password) {this.strIp = strIp;this.intPort = intPort;this.user = user;this.password = password;this.ftpClient = new FTPClient();}/*********************** Common Method Start ***********************//*** 登錄到FTP服務器 成功返回true,不成功返回false** @return*/public boolean ftpLogin() {boolean isLogin = false;FTPClientConfig ftpClientConfig = new FTPClientConfig();ftpClientConfig.setServerTimeZoneId(TimeZone.getDefault().getID());this.ftpClient.setControlEncoding("UTF-8");this.ftpClient.configure(ftpClientConfig);try {if (this.intPort > 0) {this.ftpClient.connect(this.strIp, this.intPort);} else {this.ftpClient.connect(this.strIp);}// FTP服務器連接回答int reply = this.ftpClient.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {this.ftpClient.disconnect();logger.info("登錄FTP服務失敗!");return isLogin;}this.ftpClient.login(this.user, this.password);// 設置傳輸協議this.ftpClient.enterLocalPassiveMode();this.ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);logger.info("用戶 " + this.user + " 成功登陸FTP服務器");isLogin = true;} catch (Exception e) {e.printStackTrace();logger.info(this.user + "登錄FTP服務失敗!請檢查連接參數是否正確!或者網絡是否通暢!" + e.getMessage());}this.ftpClient.setBufferSize(1024 * 2);this.ftpClient.setDataTimeout(30 * 1000);return isLogin;}/*** 退出關閉服務器鏈接*/public void ftpLogOut() {if (null != this.ftpClient && this.ftpClient.isConnected()) {try {boolean reuslt = this.ftpClient.logout();// 退出FTP服務器if (reuslt) {logger.info("成功退出服務器");}} catch (IOException e) {e.printStackTrace();logger.info("退出FTP服務器異常!" + e.getMessage());} finally {try {this.ftpClient.disconnect();// 關閉FTP服務器的連接} catch (IOException e) {e.printStackTrace();logger.info("關閉FTP服務器的連接異常!");}}}}/*** 切換工作目錄** @param pathname*/public void changeWorkingDirectory(String pathname) {try {this.ftpClient.changeWorkingDirectory(pathname);} catch (IOException e) {e.printStackTrace();}}/*** 打印出當前工作目錄*/public void printWorkDir() {try {logger.info(this.ftpClient.printWorkingDirectory());} catch (IOException e) {e.printStackTrace();}}/*********************** Common Method Ends ***********************//*********************** Upload function Parent Start ***********************//*** 上傳本地文件夾至遠程目錄(已封裝)** @param strIp* @param tPort* @param user* @param password* @param remoteDirectoryPath*/public static void uploadLocalDirToRemotePath(String strIp, int tPort, String user, String password,String localSyncFileDir, String remoteDirectoryPath) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();f.uploadDirectorySub(localSyncFileDir, remoteDirectoryPath);f.ftpLogOut();}/*** 上傳本地目錄下文件列表至遠程目錄(已封裝)** @param strIp* @param tPort* @param user* @param password* @param localSyncFileDir* @param romoteUpLoadePath*/public static void uploadLocalDirFiletListToRemoteDir(String strIp, int tPort, String user, String password,String localSyncFileDir, String romoteUpLoadePath) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();f.uploadLocalDirFileListSub(localSyncFileDir, romoteUpLoadePath);f.ftpLogOut();}/*** 上傳本地指定文件至遠程目錄(已封裝)** @param strIp* @param tPort* @param user* @param password* @param localFileName* @param remoteDirectoryPath*/public static void uploadLocalSpFileToRemotePath(String strIp, int tPort, String user, String password,String localFileName, String remoteDirectoryPath) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();File file = new File(localFileName);f.uploadAppointFileToRomotePathSub(file, remoteDirectoryPath);f.ftpLogOut();}/*** 上傳本地指定文件類型的文件至遠程目錄(已封裝)** @param strIp* @param tPort* @param user* @param password*/public static void uploadLocalSpFileTypeToRemotePath(String strIp, int tPort, String user, String password,String localSyncFileDir, String romoteUpLoadePath, String fileType) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();f.uploadLocalDirFileTypeListToRomoteSubmethod(localSyncFileDir, romoteUpLoadePath, fileType);f.ftpLogOut();}/*** 上傳本地指定文件名包含指定字符串的文件至遠程目錄(已封裝)** @param strIp* @param tPort* @param user* @param password*/public static void uploadLocalSpFileNameContainStrToRemotePath(String strIp, int tPort, String user,String password, String localSyncFileDir, String romoteUpLoadePath, String inputStr) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();f.uploadLocalSpFileNameContainStrToRemotePathSubmethod(localSyncFileDir, romoteUpLoadePath, inputStr);f.ftpLogOut();}/*** 上傳本地指定文件名前綴的文件至遠程目錄(已封裝)** @param strIp* @param tPort* @param user* @param password* @param localSyncFileDir* @param romoteUpLoadePath* @param fileNamePrefix*/public static void uploadLocalDirFileNameSpPrefixFileList(String strIp, int tPort, String user, String password,String localSyncFileDir, String romoteUpLoadePath, String fileNamePrefix) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();f.uploadLocalDirFileNameSpPrefixFileListSubmethod(localSyncFileDir, romoteUpLoadePath, fileNamePrefix);f.ftpLogOut();}/*** 上傳文件夾至遠程目錄(子方法)** @param localDirectory* @param remoteDirectoryPath* @return*/public boolean uploadDirectorySub(String localDirectory, String remoteDirectoryPath) {File file = new File(localDirectory);try {logger.info("file.getName():" + file.getName());remoteDirectoryPath = remoteDirectoryPath + file.getName() + "/";this.ftpClient.makeDirectory(remoteDirectoryPath);// ftpClient.listDirectories();} catch (IOException e) {e.printStackTrace();logger.info(remoteDirectoryPath + "目錄創建失敗");}File[] fileList = file.listFiles();logger.info("文件數量:" + fileList.length);for (int i = 0; i < fileList.length; i++) {logger.info("文件名:" + fileList[i].getName());if (!fileList[i].isDirectory()) {String srcName = fileList[i].getPath().toString();uploadAppointFileToRomotePathSub(new File(srcName), remoteDirectoryPath);}}for (int i = 0; i < fileList.length; i++) {logger.info("文件名:" + fileList[i].getName());if (fileList[i].isDirectory()) {// 遞歸uploadDirectorySub(fileList[i].getPath().toString(), remoteDirectoryPath);}}return true;}/*** 上傳本地指定文件至遠程目錄(子方法)** @param localFile* @param romoteUpLoadePath* @return*/public boolean uploadAppointFileToRomotePathSub(File localFile, String romoteUpLoadePath) {BufferedInputStream inStream = null;boolean success = false;try {// Create directorythis.ftpClient.makeDirectory(romoteUpLoadePath);// Toggle directorythis.ftpClient.changeWorkingDirectory(romoteUpLoadePath);// 改變工作路徑inStream = new BufferedInputStream(new FileInputStream(localFile));logger.info(localFile.getName() + ">>>Start Upload.....");success = this.ftpClient.storeFile(localFile.getName(), inStream);if (success == true) {logger.info(localFile.getName() + ">>>>>Upload success");return success;}} catch (FileNotFoundException e) {e.printStackTrace();logger.info(localFile + "No Found");} catch (IOException e) {e.printStackTrace();} finally {if (inStream != null) {try {inStream.close();} catch (IOException e) {e.printStackTrace();}}}return success;}public boolean upLoadMul(MultipartFile localFile, String romoteUpLoadePath, String upFileName) {BufferedInputStream inStream = null;boolean success = false;try {// Create directory // this.ftpClient.makeDirectory(romoteUpLoadePath);// Toggle directorythis.ftpClient.changeWorkingDirectory(romoteUpLoadePath);// 改變工作路徑inStream = new BufferedInputStream(localFile.getInputStream());logger.info(upFileName+ ">>>Start Upload.....");success = this.ftpClient.storeFile(upFileName, inStream);if (success == true) {logger.info(localFile.getOriginalFilename() + ">>>>>Upload success");return success;}} catch (FileNotFoundException e) {e.printStackTrace();logger.info(localFile + "No Found");} catch (IOException e) {e.printStackTrace();} finally {if (inStream != null) {try {inStream.close();} catch (IOException e) {e.printStackTrace();}}}return success;}/*** 上傳本地目錄下文件列表至遠程目錄(子方法)** @param localSyncFileDir* @param romoteUpLoadePath* @return*/public boolean uploadLocalDirFileListSub(String localSyncFileDir, String romoteUpLoadePath) {File file = new File(localSyncFileDir);try {this.ftpClient.makeDirectory(romoteUpLoadePath);} catch (IOException e) {e.printStackTrace();logger.info(romoteUpLoadePath + "目錄創建失敗");}File[] ftpFileList = file.listFiles();if (ftpFileList != null && ftpFileList.length > 0) {for (File ff : ftpFileList) {logger.info("fileName:" + ff.getName());if (ff.isFile()) {String fileName = ff.getPath().toString();uploadAppointFileToRomotePathSub(new File(fileName), romoteUpLoadePath);} else if (ff.isDirectory()) {uploadLocalDirFileListSub(ff.getPath().toString(), romoteUpLoadePath);}}}return true;}/*** 上傳本地指定文件類型的文件至遠程目錄(子方法)** @param localSyncFileDir* @param romoteUpLoadePath* @param fileType* @return*/public boolean uploadLocalDirFileTypeListToRomoteSubmethod(String localSyncFileDir, String romoteUpLoadePath,String fileType) {File file = new File(localSyncFileDir);try {this.ftpClient.makeDirectory(romoteUpLoadePath);} catch (IOException e) {e.printStackTrace();logger.info(romoteUpLoadePath + "目錄創建失敗");}File[] ftpFileList = file.listFiles();if (ftpFileList != null && ftpFileList.length > 0) {for (File ff : ftpFileList) {logger.info("fileName:" + ff.getName());if (ff.isFile() && ff.getName().endsWith(fileType)) {String srcName = ff.getPath().toString();uploadAppointFileToRomotePathSub(new File(srcName), romoteUpLoadePath);}}}return true;}/*** 上傳本地指定文件名包含指定字符串的文件至遠程目錄(子方法)** @param localSyncFileDir* @param romoteUpLoadePath* @param inputStr* @return*/public boolean uploadLocalSpFileNameContainStrToRemotePathSubmethod(String localSyncFileDir,String romoteUpLoadePath, String inputStr) {File file = new File(localSyncFileDir);try {this.ftpClient.makeDirectory(romoteUpLoadePath);} catch (IOException e) {e.printStackTrace();logger.info(romoteUpLoadePath + "目錄創建失敗");}File[] ftpFileList = file.listFiles();if (ftpFileList != null && ftpFileList.length > 0) {for (File ff : ftpFileList) {logger.info("fileName:" + ff.getName());if (ff.isFile() && ff.getName().contains(inputStr)) {String srcName = ff.getPath().toString();uploadAppointFileToRomotePathSub(new File(srcName), romoteUpLoadePath);}}}return true;}/*** 上傳本地指定文件名前綴的文件至遠程目錄(子方法)** @param localSyncFileDir* @param romoteUpLoadePath* @param fileNamePrefix* @return*/public boolean uploadLocalDirFileNameSpPrefixFileListSubmethod(String localSyncFileDir, String romoteUpLoadePath,String fileNamePrefix) {File file = new File(localSyncFileDir);try {this.ftpClient.makeDirectory(romoteUpLoadePath);} catch (IOException e) {e.printStackTrace();logger.info(romoteUpLoadePath + "目錄創建失敗");}File[] ftpFileList = file.listFiles();if (ftpFileList != null && ftpFileList.length > 0) {for (File ff : ftpFileList) {logger.info("fileName:" + ff.getName());if (ff.isFile() && ff.getName().startsWith(fileNamePrefix)) {String srcName = ff.getPath().toString();uploadAppointFileToRomotePathSub(new File(srcName), romoteUpLoadePath);}}}return true;}/*********************** Upload function Parent End ***********************//*********************** download function Parent Start ***********************//*** 下載遠程文件夾至本地目錄(已封裝)** @param strIp* @param tPort* @param user* @param password* @param localDirectory* @param remoteDirectoryPath*/public static void downloadRemoteFolders(String strIp, int tPort, String user, String password,String localDirectory, String remoteDirectoryPath) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();f.downLoadDirectorySub(localDirectory, remoteDirectoryPath);f.ftpLogOut();}/*** 下載遠程目錄下的文件列表(已封裝)** @param strIp* @param tPort* @param user* @param password* @param localDirectory* @param remoteDirectoryPath*/public static void downloadAllFilesInTheRemoteDirectory(String strIp, int tPort, String user, String password,String localDirectory, String remoteDirectoryPath) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();List<String> fileNames;try {fileNames = f.getFTPCurrentDirAllFileList(remoteDirectoryPath);// Number of printed fileslogger.info("fileNames.length : " + fileNames.size());if (fileNames != null) {for (String remoteFileName : fileNames) {logger.info("File name under directory : " + remoteFileName);f.downloadFileSub(remoteFileName, localDirectory, remoteDirectoryPath);}}} catch (ParseException e) {e.printStackTrace();} finally {f.ftpLogOut();}}/*** 下載遠程目錄下指定文件至本地目錄(已封裝)** @param strIp* @param tPort* @param user* @param password* @param appointFileName* @param localDirectory* @param remoteDirectoryPath*/public static void downloadRemoteDirAppointFile(String strIp, int tPort, String user, String password,String appointFileName, String localDirectory, String remoteDirectoryPath) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();List<String> fileNames;try {fileNames = f.getFTPDirAppointFileSub(remoteDirectoryPath, appointFileName);// Number of printed fileslogger.info("fileNames.length : " + fileNames.size());if (fileNames != null) {for (String remoteFileName : fileNames) {logger.info("File name under directory : " + remoteFileName);f.downloadFileSub(remoteFileName, localDirectory, remoteDirectoryPath);}}} catch (ParseException e) {e.printStackTrace();} finally {f.ftpLogOut();}}/*** 下載遠程目錄下面的某個類型的文件列表(已封裝)** @param strIp* @param tPort* @param user* @param password* @param localDirectory* @param remoteDirectoryPath* @param fileType*/public static void downloadFTPDirAppointFileTypeList(String strIp, int tPort, String user, String password,String localDirectory, String remoteDirectoryPath, String fileType) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();List<String> fileNames;try {fileNames = f.getFTPDirTypeFileListSub(remoteDirectoryPath, fileType);// Number of printed fileslogger.info("fileNames.length : " + fileNames.size());if (fileNames != null) {for (String remoteFileName : fileNames) {logger.info("File name under directory : " + remoteFileName);f.downloadFileSub(remoteFileName, localDirectory, remoteDirectoryPath);}}} catch (ParseException e) {e.printStackTrace();} finally {f.ftpLogOut();}}/*** 下載遠程目錄下面的文件名包含指定字符串的文件列表(已封裝)** @param strIp* @param tPort* @param user* @param password* @param localDirectory* @param remoteDirectoryPath* @param inputStr*/public static void downloadFTPDirFileContainInputStrList(String strIp, int tPort, String user, String password,String localDirectory, String remoteDirectoryPath, String inputStr) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();List<String> fileNames;try {fileNames = f.getFTPDirFileNameContainInputStrFileListsub(remoteDirectoryPath, inputStr);// Number of printed fileslogger.info("fileNames.length : " + fileNames.size());if (fileNames != null) {for (String remoteFileName : fileNames) {logger.info("File name under directory : " + remoteFileName);f.downloadFileSub(remoteFileName, localDirectory, remoteDirectoryPath);}}} catch (ParseException e) {e.printStackTrace();} finally {f.ftpLogOut();}}/*** 下載遠程目錄下面的指定文件前綴的文件列表(已封裝)** @param strIp* @param tPort* @param user* @param password* @param localDirectory* @param remoteDirectoryPath* @param fileNamePrefix*/public static void downloadFTPDirFileNameprefixList(String strIp, int tPort, String user, String password,String localDirectory, String remoteDirectoryPath, String fileNamePrefix) {FTPEnhUtils f = new FTPEnhUtils(strIp, tPort, user, password);f.ftpLogin();List<String> fileNames;try {fileNames = f.getFTPDirFileNamePrefixFileListsub(remoteDirectoryPath, fileNamePrefix);// Number of printed fileslogger.info("fileNames.length : " + fileNames.size());if (fileNames != null) {for (String remoteFileName : fileNames) {logger.info("File name under directory : " + remoteFileName);f.downloadFileSub(remoteFileName, localDirectory, remoteDirectoryPath);}}} catch (ParseException e) {e.printStackTrace();} finally {f.ftpLogOut();}}/*** 獲取FTP當前目錄下面指定文件(子方法)** @param remoteDirectory* @return* @throws ParseException*/public List<String> getFTPDirAppointFileSub(String remoteDirectory, String appointFileName) throws ParseException {List<String> fileLists = new ArrayList<String>();// Get all file names in the specified directoryFTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remoteDirectory);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (int i = 0; i < ftpFileList.length; i++) {FTPFile file = ftpFileList[i];if (file.isFile() && file.getName().equals(appointFileName)) {logger.info("fileName:" + file.getName());fileLists.add(file.getName());}}}return fileLists;}/**** 下載文件(公用方法)** @param remoteFileName 待下載文件名稱* @param localDires 下載到當地那個路徑下* @param remoteDownLoadPath remoteFileName所在的路徑*/public boolean downloadFileSub(String remoteFileName, String localDires, String remoteDownLoadPath) {String strFilePath = localDires + "/" + remoteFileName;BufferedOutputStream outStream = null;boolean success = false;try {if (!(new File(localDires).exists())) {new File(localDires).mkdirs();}this.ftpClient.changeWorkingDirectory(remoteDownLoadPath);outStream = new BufferedOutputStream(new FileOutputStream(strFilePath));logger.info(remoteFileName + "開始下載....");long beforeTime = System.currentTimeMillis();success = this.ftpClient.retrieveFile(remoteFileName, outStream);long afterTime = System.currentTimeMillis();if (success == true) {double time = (afterTime - beforeTime) / 1000.0;File file = new File(strFilePath);long length = file.length();double downloadSpeed = (length / (time * 1024));downloadSpeed = (double) Math.round(downloadSpeed * 100) / 100;logger.info(remoteFileName + "成功下載到" + strFilePath + "用時" + time + "秒." + "平均下載速度:" + downloadSpeed+ "KB/秒");return success;}} catch (Exception e) {e.printStackTrace();logger.info(remoteFileName + "下載失敗");} finally {if (null != outStream) {try {outStream.flush();outStream.close();} catch (IOException e) {e.printStackTrace();}}}if (success == false) {logger.info(remoteFileName + "下載失敗!!!");}return success;}/**** 下載文件(公用方法)** @param remoteFileName 待下載文件名稱* @param remoteDownLoadPath remoteFileName所在的路徑*/public InputStream downloadFile(String remoteFileName, String remoteDownLoadPath) {BufferedOutputStream outStream = null;boolean success = false;try {this.ftpClient.changeWorkingDirectory(remoteDownLoadPath);logger.info(remoteFileName + "開始下載1....");ftpClient.enterLocalPassiveMode();logger.info(remoteFileName + "開始下載2....");ftpClient.configure(new FTPClientConfig(remoteDownLoadPath)); //這里記得改成你放的位置 // outStream = new BufferedOutputStream(new FileOutputStream(remoteDownLoadPath+remoteFileName));logger.info(remoteFileName + "開始下載3....");InputStream in = ftpClient.retrieveFileStream(remoteFileName);logger.info(remoteFileName + "開始下載....");return in;} catch (Exception e) {e.printStackTrace();return null;}}/**** 下載文件夾(子方法)** @param localDirectoryPath 本地地址* @param remoteDirectory 遠程文件夾*/public boolean downLoadDirectorySub(String localDirectoryPath, String remoteDirectory) {try {String fileName = new File(remoteDirectory).getName();localDirectoryPath = localDirectoryPath + fileName + File.separator;new File(localDirectoryPath).mkdirs();this.ftpClient.enterLocalPassiveMode();FTPFile[] fileList = this.ftpClient.listFiles(remoteDirectory);for (int i = 0; i < fileList.length; i++) {if (!fileList[i].isDirectory()) {downloadFileSub(fileList[i].getName(), localDirectoryPath, remoteDirectory);}}for (int i = 0; i < fileList.length; i++) {if (fileList[i].isDirectory()) {String strRemoteDirectoryPath = remoteDirectory + "/" + fileList[i].getName();downLoadDirectorySub(localDirectoryPath, strRemoteDirectoryPath);}}} catch (IOException e) {e.printStackTrace();logger.info("下載文件夾失敗");return false;}return true;}/*** 獲取FTP當前目錄下面所有文件(子方法)** @param remoteDirectory* @return* @throws ParseException*/public List<String> getFTPCurrentDirAllFileList(String remoteDirectory) throws ParseException {List<String> fileLists = new ArrayList<String>();FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remoteDirectory);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (FTPFile ff : ftpFileList) {if (ff.isFile()) {logger.info("fileNme:" + ff.getName());fileLists.add(ff.getName());}}}return fileLists;}public List<String> getFTPCurrentDirAllFileList2(String remoteDirectory,String filename) throws ParseException {List<String> fileLists = new ArrayList<String>();FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remoteDirectory);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (FTPFile ff : ftpFileList) {if (ff.isFile()&&ff.getName().equals(filename)) {logger.info("fileNme:" + ff.getName());fileLists.add(ff.getName());}}}return fileLists;}/*** 獲取遠程目錄下面的某個類型的文件(子方法)** @param remoteDirectory* @return* @throws ParseException*/public List<String> getFTPDirTypeFileListSub(String remoteDirectory, String fileType) throws ParseException {List<String> fileLists = new ArrayList<String>();FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remoteDirectory);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (FTPFile ff : ftpFileList) {logger.info("fileNme:" + ff.getName());if (ff.isFile() && ff.getName().endsWith(fileType)) {fileLists.add(ff.getName());}}}return fileLists;}/*** 獲取遠程目錄下面文件名包含地址字符串的文件(子方法)** @param remoteDirectory* @return* @throws ParseException*/public List<String> getFTPDirFileNameContainInputStrFileListsub(String remoteDirectory, String inputStr)throws ParseException {List<String> fileLists = new ArrayList<String>();FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remoteDirectory);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (FTPFile ff : ftpFileList) {logger.info("fileNme:" + ff.getName());if (ff.isFile() && ff.getName().contains(inputStr)) {fileLists.add(ff.getName());}}}return fileLists;}/*** 下載遠程目錄下面的指定文件前綴的文件列表(子方法)** @param remoteDirectory* @param fileNamePrefix* @return* @throws ParseException*/public List<String> getFTPDirFileNamePrefixFileListsub(String remoteDirectory, String fileNamePrefix)throws ParseException {List<String> fileLists = new ArrayList<String>();FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remoteDirectory);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (FTPFile ff : ftpFileList) {logger.info("fileNme:" + ff.getName());if (ff.isFile() && ff.getName().startsWith(fileNamePrefix)) {fileLists.add(ff.getName());}}}return fileLists;}/*********************** download function Parent End ***********************//************************ deleteRemote function Parent Start***********************//*** 刪除遠程指定目錄下的所有文件(已封裝)** @param strIp* @param tPort* @param user* @param password* @param remotePath*/public static void delteRemoteAppointDirFileList(String strIp, int tPort, String user, String password,String remotePath) {FTPEnhUtils ftp = new FTPEnhUtils(strIp, tPort, user, password);ftp.ftpLogin();ftp.delRemoteDirFileList(remotePath);ftp.ftpLogOut();}/*** 刪除遠程指定文件(已封裝)** @param strIp* @param tPort* @param user* @param password* @param remotePath* @param remoteAppointFileName*/public static void delteRemoteAppointFile(String strIp, int tPort, String user, String password, String remotePath,String remoteAppointFileName) {FTPEnhUtils ftp = new FTPEnhUtils(strIp, tPort, user, password);ftp.ftpLogin();String remoteDelFilePath = remotePath + remoteAppointFileName;ftp.delete(remoteDelFilePath);ftp.ftpLogOut();}/*** 刪除遠程指定目錄下的指定文件類型的文件列表(已封裝)** @param strIp* @param tPort* @param user* @param password* @param remotePath* @param fileType*/public static void delteRemoteAppointFileTypeList(String strIp, int tPort, String user, String password,String remotePath, String fileType) {FTPEnhUtils ftp = new FTPEnhUtils(strIp, tPort, user, password);ftp.ftpLogin();ftp.delteRemoteAppointFileTypeListSub(remotePath, fileType);ftp.ftpLogOut();}/*** 刪除遠程指定目錄下的指定文件名前綴的文件列表(已封裝)** @param strIp* @param tPort* @param user* @param password* @param remotePath* @param fileNamePrefix*/public static void delteRemoteAppointFilePrefixList(String strIp, int tPort, String user, String password,String remotePath, String fileNamePrefix) {FTPEnhUtils ftp = new FTPEnhUtils(strIp, tPort, user, password);ftp.ftpLogin();ftp.delteRemoteAppointFilePrefixListSub(remotePath, fileNamePrefix);ftp.ftpLogOut();}/*** 刪除遠程指定目錄下的文件名包含指定字符串的文件列表(已封裝)** @param strIp* @param tPort* @param user* @param password* @param remotePath* @param inputStr*/public static void delteRemoteFileNameContainInptStrList(String strIp, int tPort, String user, String password,String remotePath, String inputStr) {FTPEnhUtils ftp = new FTPEnhUtils(strIp, tPort, user, password);ftp.ftpLogin();ftp.delteRemoteFileNameContainInptStrListSub(remotePath, inputStr);ftp.ftpLogOut();}/*** 刪除遠程指定目錄下的所有文件(子方法)** @param remotePath*/public void delRemoteDirFileList(String remotePath) {FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remotePath);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (int i = 0; i < ftpFileList.length; i++) {FTPFile file = ftpFileList[i];if (file.isFile()) {logger.info("fileName:" + file.getName());try {this.ftpClient.deleteFile(remotePath + file.getName());} catch (IOException e) {e.printStackTrace();}}}}}/*** 刪除遠程指定目錄下的指定文件類型的文件列表(子方法)** @param remotePath* @param fileType*/public void delteRemoteAppointFileTypeListSub(String remotePath, String fileType) {FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remotePath);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (int i = 0; i < ftpFileList.length; i++) {FTPFile file = ftpFileList[i];if (file.isFile() && file.getName().endsWith(fileType)) {logger.info("fileName:" + file.getName());try {this.ftpClient.deleteFile(remotePath + file.getName());} catch (IOException e) {e.printStackTrace();}}}}}/*** 刪除遠程指定目錄下的指定文件名前綴的文件列表(已封裝)** @param remotePath* @param fileNamePrefix*/public void delteRemoteAppointFilePrefixListSub(String remotePath, String fileNamePrefix) {FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remotePath);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (int i = 0; i < ftpFileList.length; i++) {FTPFile file = ftpFileList[i];if (file.isFile() && file.getName().startsWith(fileNamePrefix)) {logger.info("fileName:" + file.getName());try {this.ftpClient.deleteFile(remotePath + file.getName());} catch (IOException e) {e.printStackTrace();}}}}}/*** 刪除遠程指定目錄下的指定文件名前綴的文件列表(子方法)** @param remotePath* @param inputStr*/public void delteRemoteFileNameContainInptStrListSub(String remotePath, String inputStr) {FTPFile[] ftpFileList = null;try {ftpFileList = this.ftpClient.listFiles(remotePath);} catch (IOException e) {e.printStackTrace();}if (ftpFileList != null && ftpFileList.length > 0) {for (int i = 0; i < ftpFileList.length; i++) {FTPFile file = ftpFileList[i];if (file.isFile() && file.getName().contains(inputStr)) {logger.info("fileName:" + file.getName());try {this.ftpClient.deleteFile(remotePath + file.getName());} catch (IOException e) {e.printStackTrace();}}}}}/*** 刪除遠程指定文件(子方法)** @param pathname*/public void delete(String pathname) {try {this.ftpClient.deleteFile(pathname);} catch (IOException e) {e.printStackTrace();}}/************************ deleteRemote function Parent End***********************//************************ deleteLocal function Parent Start***********************//*** 刪除本地目錄下文件列表** @param mDeleteLocalFileListPath*/public static void delLocalDirFileList(String mDeleteLocalFileListPath) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile()) {ff.delete();}}}/*** 刪除本地目錄指定文件類型的文件列表(忽略大小寫)** @param mDeleteLocalFileListPath* @param mFileType*/public static void delLocalDirFileList(String mDeleteLocalFileListPath, String mFileType) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile() && ff.getName().toLowerCase().endsWith(mFileType)) {ff.delete();}}}/*** 刪除本地目錄指定文件類型的文件并且文件名中包含傳入日期的文件列表(忽略大小寫)** @param mDeleteLocalFileListPath* @param mFileType* @param mInputDate*/public static void delLocalDirFileList(String mDeleteLocalFileListPath, String mFileType, String mInputDate) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile() && ff.getName().toLowerCase().endsWith(mFileType) && ff.getName().contains(mInputDate)) {ff.delete();}}}/*** 刪除本地目錄下面文件名中包含傳入日期的文件列表**/public static void delLocalDirFileNameContainInputDate(String mDeleteLocalFileListPath, String mInputDate) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile() && ff.getName().contains(mInputDate)) {ff.delete();}}}/*** 刪除本地目錄下面文件名中包含傳入字符串的文件列表(忽略大小寫)**/public static void delLocalDirFileNameContainInputStr(String mDeleteLocalFileListPath, String mInputStr) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile() && ff.getName().toLowerCase().contains(mInputStr)) {ff.delete();}}}/*** 刪除本地目錄下面文件名指定前綴并且包含傳入日期的文件列表(忽略大小寫)** @param mDeleteLocalFileListPath* @param mPrefix* @param mInputDate*/public static void delLocalDirFileNameContainInputDate(String mDeleteLocalFileListPath, String mPrefix,String mInputDate) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile() && ff.getName().toLowerCase().startsWith(mPrefix) && ff.getName().contains(mInputDate)) {ff.delete();}}}/*** 刪除本地目錄下面文件名指定前綴的文件列表(忽略大小寫)** @param mDeleteLocalFileListPath* @param mPrefix*/public static void delLocalDirFileNameSpPrefixFileList(String mDeleteLocalFileListPath, String mPrefix) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile() && ff.getName().toLowerCase().startsWith(mPrefix)) {ff.delete();}}}/*** 刪除本地目錄下面文件名指定前綴和索引的文件列表(忽略大小寫)** @param mDeleteLocalFileListPath* @param mPrefix*/public static void delLocalDirFileNameSpPrefixFileList(String mDeleteLocalFileListPath, String mPrefix, int index) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile() && ff.getName().toLowerCase().startsWith(mPrefix, index)) {ff.delete();}}}/*** 刪除本地目錄指定文件類型的文件列表(不忽略大小寫)** @param mDeleteLocalFileListPath* @param mFileType*/public static void delLocalDirFileList2(String mDeleteLocalFileListPath, String mFileType) {File file = new File(mDeleteLocalFileListPath);File[] f1 = file.listFiles();for (File ff : f1) {System.out.println("fileName:" + ff.getName());if (ff.isFile() && ff.getName().endsWith(mFileType)) {ff.delete();}}}/************************ deleteLocal function Parent End***********************//*** 獲取FTP目錄當前日期下面所有文件** @return* @throws ParseException*/public List<String> getCurrentDirAllFileList(String localPath, String strDate) throws ParseException {List<String> list = new ArrayList<String>();// 獲得指定目錄下所有文件名File file = new File(localPath);File[] listFiles = null;listFiles = file.listFiles();if (listFiles != null && listFiles.length > 0) {for (File ff : listFiles) {if (ff.isFile() && ff.getName().contains(strDate)) {list.add(ff.getName());}}}return list;}// FtpClient的Set 和 Get 函數public FTPClient getFtpClient() {return ftpClient;}public void setFtpClient(FTPClient ftpClient) {this.ftpClient = ftpClient;} }三、ftp實戰
① 下載集合測試
package com.gblfy.controller;import com.gblfy.config.BaseConfig; import com.gblfy.utils.FTPEnhUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody;/*** @author gblfy* @Description 下載集合* @Date 2020/1/2 15:05* @version1.0*/ @Controller public class DownloadAssemble {@Autowiredprivate BaseConfig baseConfig;/******************************* DownloadAssemble Start *******************************//*** 下載遠程目錄下指定文件至本地目錄(已封裝)** @return*/@GetMapping("/downloadRemoteDirAppointFile")@ResponseBodypublic String downloadRemoteDirAppointFile() {FTPEnhUtils.downloadRemoteDirAppointFile(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getRemoteDirAppointFile(), baseConfig.getLocalSaveDir(), baseConfig.getRemoteDownLoadDir());return "下載完成!!!";}/*** 下載遠程目錄下面的某個類型的文件列表(已封裝)** @return*/@GetMapping("/downloadFTPDirAppointFileTypeList")@ResponseBodypublic String downloadFTPDirAppointFileTypeList() {FTPEnhUtils.downloadFTPDirAppointFileTypeList(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSaveDir(), baseConfig.getRemoteDownLoadDir(), baseConfig.getFileType());return "下載完成!!!";}/*** 下載遠程目錄下面的文件名包含指定字符串的文件列表(已封裝)** @return*/@GetMapping("/downloadFTPDirFileContainInputStrList")@ResponseBodypublic String downloadFTPDirFileContainInputStrList() {FTPEnhUtils.downloadFTPDirFileContainInputStrList(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSaveDir(), baseConfig.getRemoteDownLoadDir(), baseConfig.getInputStr());return "下載完成!!!";}/*** 下載遠程目錄下面的指定文件前綴的文件列表(已封裝)** @return*/@GetMapping("/downloadFTPDirFileNameprefixList")@ResponseBodypublic String downloadFTPDirFileNameprefixList() {FTPEnhUtils.downloadFTPDirFileNameprefixList(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSaveDir(), baseConfig.getRemoteDownLoadDir(), baseConfig.getFileNamePrefix());return "下載完成!!!";}/*** 下載遠程目錄下的文件列表(已封裝)** @return*/@GetMapping("/downloadAllFilesInTheRemoteDirectory")@ResponseBodypublic String downloadAllFilesInTheRemoteDirectory() {FTPEnhUtils.downloadAllFilesInTheRemoteDirectory(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSaveDir(), baseConfig.getRemoteDownLoadDir());return "下載完成!!!";}/*** 下載遠程文件夾至本地目錄(已封裝)** @return*/@GetMapping("/downloadRemoteFolders")@ResponseBodypublic String downloadRemoteFolders() {FTPEnhUtils.downloadRemoteFolders(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSaveDir(), baseConfig.getRemoteDownLoadDir());return "下載完成!!!";}/******************************* DownloadAssemble End *******************************/ }② 上傳集合測試
package com.gblfy.controller;import com.gblfy.config.BaseConfig; import com.gblfy.utils.FTPEnhUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody;/*** @author gblfy* @ClassNme UploadAssemble* @Description 上傳集合* @Date 2020/1/3 14:52* @version1.0*/ @Controller public class UploadAssemble {@Autowiredprivate BaseConfig baseConfig;/******************************* UploadAssemble Start *******************************//*** 上傳本地文件夾至遠程目錄(已封裝)** @return*/@GetMapping("/uploadLocalDirToRemotePath")@ResponseBodypublic String uploadLocalDirToRemotePath() {FTPEnhUtils.uploadLocalDirToRemotePath(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSyncFileDir(), baseConfig.getRomoteUpLoadePath());return "上傳完成!!!";}/*** 上傳本地目錄下文件列表至遠程目錄(已封裝)** @return*/@GetMapping("/uploadLocalDirFiletListToRemoteDir")@ResponseBodypublic String uploadLocalDirFiletListToRemoteDir() {FTPEnhUtils.uploadLocalDirFiletListToRemoteDir(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSyncFileDir(), baseConfig.getRomoteUpLoadePath());return "上傳完成!!!";}/*** 上傳本地指定文件至遠程目錄(已封裝)** @return*/@GetMapping("/uploadLocalSpFileToRemotePath")@ResponseBodypublic String uploadLocalSpFileToRemotePath() {FTPEnhUtils.uploadLocalSpFileToRemotePath(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getAppointFileName(), baseConfig.getRomoteUpLoadePath());return "上傳完成!!!";}/*** 上傳本地指定文件類型的文件至遠程目錄(已封裝)** @return*/@GetMapping("/uploadLocalSpFileTypeToRemotePath")@ResponseBodypublic String uploadLocalSpFileTypeToRemotePath() {FTPEnhUtils.uploadLocalSpFileTypeToRemotePath(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSyncFileDir(), baseConfig.getRomoteUpLoadePath(), baseConfig.getFileType());return "上傳完成!!!";}/*** 上傳本地指定文件名包含指定字符串的文件至遠程目錄(已封裝)** @return*/@GetMapping("/uploadLocalSpFileNameContainStrToRemotePath")@ResponseBodypublic String uploadLocalSpFileNameContainStrToRemotePath() {FTPEnhUtils.uploadLocalSpFileNameContainStrToRemotePath(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSyncFileDir(), baseConfig.getRomoteUpLoadePath(), baseConfig.getInputStr());return "上傳完成!!!";}/*** 上傳本地指定文件名前綴的文件至遠程目錄(已封裝)** @return*/@GetMapping("/uploadLocalDirFileNameSpPrefixFileList")@ResponseBodypublic String uploadLocalDirFileNameSpPrefixFileList() {FTPEnhUtils.uploadLocalDirFileNameSpPrefixFileList(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getLocalSyncFileDir(), baseConfig.getRomoteUpLoadePath(), baseConfig.getFileNamePrefix());return "上傳完成!!!";}/******************************* UploadAssemble End *******************************/}③ 刪除集合測試
package com.gblfy.controller;import com.gblfy.config.BaseConfig; import com.gblfy.utils.FTPEnhUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody;/*** @author gblfy* @Description 刪除集合* @Date 2020/1/2 15:05* @version1.0*/ @Controller public class DelAssemble {@Autowiredprivate BaseConfig baseConfig;/******************************* DelAssemble Start *******************************//*** 刪除遠程指定目錄下的所有文件(已封裝)** @return*/@GetMapping("/delteRemoteAppointDirFileList")@ResponseBodypublic String delteRemoteAppointDirFileList() {FTPEnhUtils.delteRemoteAppointDirFileList(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getRomoteDelPath());return "刪除完成!!!";}/*** 刪除遠程指定文件(已封裝)** @return*/@GetMapping("/delteRemoteAppointFile")@ResponseBodypublic String delteRemoteAppointFile() {FTPEnhUtils.delteRemoteAppointFile(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getRomoteDelPath(), baseConfig.getAppointFileName());return "刪除完成!!!";}/*** 刪除遠程指定目錄下的指定文件類型的文件列表(已封裝)** @return*/@GetMapping("/delteRemoteAppointFileTypeList")@ResponseBodypublic String delteRemoteAppointFileTypeList() {FTPEnhUtils.delteRemoteAppointFileTypeList(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getRomoteDelPath(), baseConfig.getFileType());return "刪除完成!!!";}/*** 刪除遠程指定目錄下的指定文件名前綴的文件列表(已封裝)** @return*/@GetMapping("/delteRemoteAppointFilePrefixList")@ResponseBodypublic String delteRemoteAppointFilePrefixList() {FTPEnhUtils.delteRemoteAppointFilePrefixList(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getRomoteDelPath(), baseConfig.getFileNamePrefix());return "刪除完成!!!";}/*** 刪除遠程指定目錄下的文件名包含指定字符串的文件列表(已封裝)** @return*/@GetMapping("/delteRemoteFileNameContainInptStrList")@ResponseBodypublic String delteRemoteFileNameContainInptStrList() {FTPEnhUtils.delteRemoteFileNameContainInptStrList(baseConfig.getIpAddress(), baseConfig.getPort(), baseConfig.getUserName(),baseConfig.getPassWd(), baseConfig.getRomoteDelPath(), baseConfig.getInputStr());return "刪除完成!!!";}/******************************* DelAssemble End *******************************/ }項目源碼:
https://github.com/gb-heima/file-assemble
總結
以上是生活随笔為你收集整理的3行代码实现ftp 上传、下载、删除操作集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flowable 启动流程到完成所有任务
- 下一篇: 工作流实战_05_flowable 流程