第一步:引入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());
}
}
}
}

JAVA 中不错的开源FTP组件:commons-net的更多相关文章

  1. 应用于Java中的一个开源的表达式语言(Expression Language)

    OGNL(英文全称:Object Graph Navigation Language,中文名:对象导航图语言)是应用于Java中的一个开源的表达式语言(Expression Language),它被集 ...

  2. 不错的开源FTP类库

    socket开源ftp类库代码:http://netftp.codeplex.com/ 需要注意事项,如果以下代码出现乱码问题,可以设置其中的Encoding属性就可以. 用法示例: using Sy ...

  3. java中经常使用的Swing组件总结

    1.按钮(Jbutton) Swing中的按钮是Jbutton,它是javax.swing.AbstracButton类的子类,swing中的按钮可以显示图像,并且可以将按钮设置为窗口的默认图标,而且 ...

  4. Java 基础 在Java中需要使用内存的组件

    Java程序启动后作为一个进程运行在操作系统中,那么这个进程有哪些部分需要分配内存? 1 Java堆 Java堆用于存储Java对象,堆的大小在JVM启动时向操作系统一次性申请完成,通过-Xmx和-X ...

  5. .net 开源 FTP 组件 edtFTPnet

    edtFTPnet官方网站:http://www.enterprisedt.com/products/edtftpnet/ 目前最新版本为2.2.3,下载后在bin目录中找到edtFTPnet.dll ...

  6. [android]__如何在studio中导入,使用开源的UI组件

    前言 在编程开发中,我们对第三方的优质开源组件是十分依赖的,在很多时候,我们都会使用到他们.使用第三方开源组件能够给我们的编程开发带来很大的便利.今天以这篇文章记录关于在android项目中引用第三方 ...

  7. 在Java中调用Python

    写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...

  8. Java中日志组件详解

    avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...

  9. (转) JAVA中如何设置图片(图标)自适应Jlable等组件的大小

    一.问题: 一个程序,组件上设置某个图片作为图标,因为的label(应该说是组件)已经设定了固定大小, 所以再打开一些大图片时,超过组件大小的部分没显示出来,而小图片又没填充完整个组件 二.解决这个问 ...

随机推荐

  1. Activator 动态构造对象

    Activator  意义: 用于动态构造对象 语法1: 根据指定的泛型类型构造对象 Activator.CreateInstance<类型>() 语法2: 根据程序集和类型名构造对象 S ...

  2. word删除空白行

    情况一:如果粘贴后,word页面既有表格又有文字(有时网页中选定时看不到表格,粘贴后却有表格),还有许多空行! 硬回车: “编辑--替换” -查找内容为“^p^p”,替换成“^p”--然后全部替换! ...

  3. WCID Devices -- Windows Compatible ID Devices

    WCID Devices What is WCID? A WCID device, where WCID stands for "Windows Compatible ID", i ...

  4. Cloud Foundry中DEA启动应用实例时环境变量的使用

    在Cloud Foundry v2中,当应用用户须要启动应用的实例时.用户通过cf CLI向cloud controller发送请求,而cloud controller通过NATS向DEA转发启动请求 ...

  5. Snmp学习总结(三)——Win7安装和配置SNMP

    一.安装SNMP Win7操作系统默认情况下是不安装SNMP服务的,今天讲解一下在Win7操作系统下安装SNMP,具体安装步骤如下: WIN7操作系统下安装SNMP的步骤如下: 开始安装SNMP

  6. 为什么使用this构造器

    当一个类有多个构造函数的时候,常使用this构造器: public class SomeClass { public SomeClass() { //TODO:初始化一些字段 } public Som ...

  7. 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作

    spring boot 2.X集成ES 进行CRUD操作  完整版 内容包括: ============================================================ ...

  8. java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

    java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.w ...

  9. MySql、Oracle、MSSQL中的字符串的拼接

    字符串的拼接 1,Mysql 在Java.C#等编程语言中字符串的拼接可以通过加号“+”来实现,比如:"1"+"3"."a"+"b ...

  10. win7下设置环境变量

    手工当然可以进行环境变量的设置,但是如果一个小组有需要设置固定环境变量的操作,这可能就会有点麻烦了,xp下设置环境变量比较简单,直接用set,win7下需要使用setx SETX XX_HOME &q ...