日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

生成ftp文件的目录树

發(fā)布時(shí)間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生成ftp文件的目录树 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

依賴

<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.4</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.3.2</version></dependency>

節(jié)點(diǎn)對(duì)象

package per.qiao.utils.ftp;/*** Create by IntelliJ Idea 2018.2** @author: qyp* Date: 2019-07-19 22:14*/import lombok.Data;import java.util.List;@Data public class Node {private enum TYPE {DIR("DIR"),FILE("FILE");private String type;private TYPE(String type) {this.type = type;}public String getType() {return this.type;}}private String id;private String name;private String path;private TYPE type;private List<Node> childList;private Node() {}private Node(String id, String name, String path, TYPE type) {this.id = id;this.name = name;this.path = path;this.type = type;}public static Node getDirNode(String id, String name, String path) {return new Node(id, name, path, TYPE.DIR);}public static Node getFileNode(String id, String name, String path) {return new Node(id, name, path, TYPE.FILE);} }

生成節(jié)點(diǎn)目錄樹(shù)結(jié)構(gòu)

package per.qiao.utils.ftp;import org.apache.commons.lang3.StringUtils; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.UUID;/*** Create by IntelliJ Idea 2018.2** @author: qyp* Date: 2019-07-19 21:27*/public class FtpUtils {private final static Logger logger = LoggerFactory.getLogger(FtpUtils.class);/*** 本地連接* @return*/public static FTPClient localConn() {String server = "127.0.0.1";int port = 21;String username = "test";String password = "test"; // path = "/FTPStation/";FTPClient ftpClient = null;try {ftpClient = connectServer(server, port, username, password, "/");} catch (IOException e) {e.printStackTrace();}return ftpClient;}/**** @param server* @param port* @param username* @param password* @param path 連接的節(jié)點(diǎn)(相對(duì)根路徑的文件夾)* @return*/public static FTPClient connectServer(String server, int port, String username, String password, String path) throws IOException {path = path == null ? "" : path;FTPClient ftp = new FTPClient();//下面四行代碼必須要,而且不能改變編碼格式,否則不能正確下載中文文件// 如果使用serv-u發(fā)布ftp站點(diǎn),則需要勾掉“高級(jí)選項(xiàng)”中的“對(duì)所有已收發(fā)的路徑和文件名使用UTF-8編碼”ftp.setControlEncoding("GBK");FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);conf.setServerLanguageCode("zh");ftp.configure(conf);// 判斷ftp是否存在ftp.connect(server, port);ftp.setDataTimeout(2 * 60 * 1000);if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {ftp.disconnect();System.out.println(server + "拒絕連接");}//登陸ftpboolean login = ftp.login(username, password);if (logger.isDebugEnabled()) {if (login) {logger.debug("登陸FTP成功! ip: " + server);} else {logger.debug("登陸FTP失敗! ip: " + server);}}//根據(jù)輸入的路徑,切換工作目錄。這樣ftp端的路徑就可以使用相對(duì)路徑了exchageDir(path, ftp);return ftp;}/*** 切換目錄 返回切換的層級(jí)數(shù)* @param path* @param ftp* @return 切換的層級(jí)數(shù)* @throws IOException*/private static int exchageDir(String path, FTPClient ftp) {// 切換的次數(shù)(層級(jí)),方便回退int level = 0;try {if (StringUtils.isNotBlank(path)) {// 對(duì)路徑按照 '/' 進(jìn)行切割,一層一層的進(jìn)入String[] pathes = path.split("/");for (String onepath : pathes) {if (onepath == null || "".equals(onepath.trim())) {continue;}//文件排除if (onepath.contains(".")) {continue;}boolean flagDir = ftp.changeWorkingDirectory(onepath);if (flagDir) {level ++;logger.info("成功連接ftp目錄:" + ftp.printWorkingDirectory());} else {logger.warn("連接ftp目錄失敗:" + ftp.printWorkingDirectory());}}}} catch (IOException e) {logger.error("切換失敗, 路徑不存在");e.printStackTrace();throw new IllegalArgumentException("切換失敗, 路徑不存在");}return level;}/*** 生成目錄樹(shù)* @return*/public static Node getTree(String path) {FTPClient ftp = localConn();exchageDir(path, ftp);String rootNodeName = path.substring(path.lastIndexOf("/") + 1);Node rootNode = Node.getDirNode(getId(), rootNodeName, path);listTree(ftp, path, rootNode);return rootNode;}/*** 遍歷樹(shù)結(jié)構(gòu)* @param ftp* @param rootPath* @param parentNode*/private static void listTree(FTPClient ftp, String rootPath, Node parentNode) {try {FTPFile[] ftpFiles = ftp.listFiles();if (ftpFiles.length <= 0) {return;}for (FTPFile f : ftpFiles) {List<Node> childList = parentNode.getChildList();if (childList == null) {childList = new ArrayList<>();parentNode.setChildList(childList);}Node currentNode = null;if (f.isDirectory()) {currentNode = Node.getDirNode(getId(), f.getName(), rootPath + File.separator + f.getName());if (ftp.changeWorkingDirectory(f.getName()) ) {if (logger.isDebugEnabled()) {logger.debug("進(jìn)入:", ftp.printWorkingDirectory());}listTree(ftp, rootPath + File.separator + f.getName(), currentNode);}ftp.changeToParentDirectory();if (logger.isDebugEnabled()) {logger.debug("退出: {}", ftp.printWorkingDirectory());}} else {currentNode = Node.getFileNode(getId(), f.getName(), rootPath + File.separator + f.getName());}childList.add(currentNode);}} catch (IOException e) {e.printStackTrace();logger.error("路徑不存在");}}private static String getId() {return UUID.randomUUID().toString().replaceAll("-", "");}public static void main(String[] args) {Node rootNode = getTree("/CAD/第一層");System.out.println(rootNode);}}

轉(zhuǎn)載于:https://www.cnblogs.com/qiaozhuangshi/p/11216455.html

總結(jié)

以上是生活随笔為你收集整理的生成ftp文件的目录树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青青青青在线 | 亚洲天堂高清 | 亚洲一区二区三区av无码 | 国产黄大片在线观看画质优化 | 深夜精品 | 中文字幕二 | 国产免费黄色录像 | 色综合视频网 | 欧美怡春院 | 国产精品视频一区二区三区 | 成人免费在线网址 | 五月天激情国产综合婷婷婷 | 欧美激情精品久久久久久蜜臀 | 夜夜草网 | 免费观看一级黄色片 | 午夜国产免费 | 糖心av| 一本色道久久综合亚洲精品 | 亚洲精品免费看 | 91精品综合久久 | 日本高清视频免费观看 | 午夜高清 | 一级在线观看 | 毛片无码免费无码播放 | 色女孩综合网 | 成人av日韩 | 天天干网站 | 图片区亚洲色图 | 成人在线免费播放视频 | 肉大榛一进一出免费视频 | 免费在线观看视频 | 色哟哟在线观看 | 午夜日韩欧美 | 国产一区二区免费在线观看 | 亚洲欧洲综合av | 尹人综合| 国产精品不卡一区 | 亚洲成人av免费 | 日韩av在线网 | 少妇性色av| 熟妇高潮精品一区二区三区 | 五月激情婷婷丁香 | 精品日韩一区二区三区 | 久九九| 久久久人体 | 黄色一级片国产 | 91丨国产丨捆绑调教 | 日本高清无吗 | 精品天堂| 无遮挡国产 | 免费黄在线 | 九九在线免费视频 | 轮乱| 国产在线观看 | 先锋影音色 | 爱爱视频网 | 99re视频| 人人爽视频 | 干干干日日日 | 97免费人妻无码视频 | 综合网激情 | 麻豆做爰免费观看 | 伊人欧美在线 | 中文字幕一区二区久久人妻网站 | 97中文字幕| 日韩性网站 | 少妇无套内谢久久久久 | 奇米精品一区二区三区在线观看一 | 亚洲美女综合 | 欧洲成人免费视频 | 欧洲一区二区视频 | 久久综合影院 | 亚洲激情一区 | 九九九久久久精品 | 国产亚洲一区二区三区不卡 | 国产女人18毛片水真多18 | 打开免费观看视频在线 | 色七七在线 | 欧美视频成人 | 亚洲精品偷拍视频 | 日韩在线中文字幕视频 | 久久久久久亚洲av毛片大全 | 精品久久久久久久久久久 | 91亚洲精 | 日韩一级久久 | 国产成人在线观看网站 | 欧美福利网站 | 麻豆精品国产传媒mv男同 | 日韩一区二区在线播放 | 99精品偷自拍 | 高潮白浆女日韩av免费看 | 手机电影在线观看 | 国产日韩在线观看视频 | 青青青草视频 | 欧美性久久久久 | 免费黄色一级 | 精品乱码一区内射人妻无码 | 欧美在线导航 | 动漫羞羞 |