第一步:引入jar到pom.xml、
<!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version> </dependency>
第二步:demo代码示例
以下代码实现了,连接ftp,遍历ftp服务器上的目录结构
package com.dx.ftp; import java.io.IOException; import java.net.MalformedURLException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; /** * Hello world! */ public class App { public static void main(String[] args) throws IOException { String hostname = "ftp1.linuxidc.com"; Integer port = 21; String username = "ftp1.linuxidc.com"; String password = "www.linuxidc.com"; FTPClient ftpClient = new FTPClient(); // ftpClient.setControlEncoding("utf-8"); ftpClient.setControlEncoding("GB2312"); try { System.out.println("connecting...ftp服务器:" + hostname + ":" + port); ftpClient.connect(hostname, port); // 连接ftp服务器 ftpClient.login(username, password); // 登录ftp服务器 int replyCode = ftpClient.getReplyCode(); // 是否成功登录服务器 if (!FTPReply.isPositiveCompletion(replyCode)) { System.out.println("connect failed...ftp服务器:" + hostname + ":" + port); } System.out.println("connect successfu...ftp服务器:" + hostname + ":" + port); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } ftpClient.enterLocalPassiveMode(); ftpClient.changeWorkingDirectory("/"); deepLoop(ftpClient, "/"); System.out.println("Hello World!"); } private static void deepLoop(FTPClient ftpClient, String dir) throws IOException { FTPFile[] files = ftpClient.listFiles(dir); for (FTPFile file : files) { if (file.isDirectory()) { if (!file.getName().startsWith(".")) { System.out.println("directory ---------> " + dir + "/" + file.getName()); deepLoop(ftpClient, dir + "/" + file.getName()); } } else if (file.isFile()) { System.out.println("file ---------> " + dir + "/" + file.getName()); } else if (file.isSymbolicLink()) { System.out.println("symboliclink---------> " + file.getName()); } else if (file.isUnknown()) { System.out.println("unknown ---------> " + file.getName()); } } } }
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。