最近在项目中接触到ftp4j,自我充电了一下,发现实现起来还是比较简单的,在这里记录下使用方法。

  首先需要下载资源,从官方下载即可,这个文件就包含jar包跟源码以及API。给出下载地址:

http://www.sauronsoftware.it/projects/ftp4j/download.php?PHPSESSID=1gn32r2t3ho11qv9vtnhgmdoe2

  然后将jar放在项目的lib文件夹里(没有就新建),然后在项目的build Path中添加这个jar库,再把源码复制到项目中。这样准备工作就做完了。下面就用这个来实现一个文件的上传下载。

  首先要介绍的是 FTPClient 这个类,通过 new FTPClient()可以获得一个实例。通过这个类登陆ftp,进行文件传输等各种工作。下面介绍一些方法:

  connect(String,Int); 创建一个ftp链接,第一个参数是IP,第二个参数是端口号。

  setPassive(boolean);设置连接方式是被动还是主动,true代表被动,false是主动。

  login(String,String);登录ftp,第一个参数是用户名,第二个是密码。

  currentDirectory();获取当前ftp目录路径。

  createDirectory(String);创建一个目录,参数是文件夹名称。

  changeDirectory(String);改变当前ftp工作路径,参数是目标路径。

  ListName();获取当前ftp路径内的所有文件名称,返回的是 String[] 类型

  upload(File);上传一个本地文件,参数是本地文件实例。

  upload(File,Long);上传一个本地文件,可以断点续传。第一个参数是本地文件,第二个参数是已经传到ftp上的文件大小。

  download(String,File);下载文件。第一个参数是ftp文件名称,第二个参数是下载后保存在本地的文件实例。

  download(String,File,Long);下载文件,可以断定续传。前两个参数同上,第三个是已经下载保存到本地的文件大小。

  以上几个方法就可以实现基本的ftp操作了。下面贴上Demo代码:

  1 package org.tomato.test;
  2
  3 import java.io.File;
  4 import java.io.FileNotFoundException;
  5 import java.io.IOException;
  6
  7 import it.sauronsoftware.ftp4j.FTPAbortedException;
  8 import it.sauronsoftware.ftp4j.FTPClient;
  9 import it.sauronsoftware.ftp4j.FTPDataTransferException;
 10 import it.sauronsoftware.ftp4j.FTPException;
 11 import it.sauronsoftware.ftp4j.FTPIllegalReplyException;
 12
 13 public class Main {
 14
 15     public static final String HOST = "192.168.1.100";
 16     public static final int POST = 21;
 17     public static final String NAME = "test";
 18     public static final String PWD = "test";
 19
 20     private FTPClient client = null;
 21
 22     public static void main(String[] args) {
 23         Main ma = new Main();
 24         ma.createConnection();    //创建链接
 25         // ma.createFile("tests");    //创建文件夹
 26         ma.upLoadFile("D:\\test.zip", "/");    //上传文件
 27         for (String a : ma.getDirList()) {
 28                  //下载当前目录下所有文件
 29             System.out.println(a);
 30             File f=new File(a);
 31             if(!f.isFile()){
 32                 continue;
 33             }
 34             System.out.println("--"+ma.downFile(a, new File("D:\\"+f.getName())));
 35         }
 36
 37         ma.closeConnection(ma.client);
 38     }
 39
 40     /**
 41      * 创建链接
 42      */
 43     private void createConnection() {
 44         System.out.println("createConnection--");
 45         client = new FTPClient();
 46         try {
 47             client.setPassive(true);
 48             client.connect(HOST, POST);
 49             client.login(NAME, PWD);
 50         } catch (Exception e) {
 51
 52             if (client != null) {
 53                 closeConnection(client);
 54             }
 55             e.printStackTrace();
 56         }
 57
 58     }
 59
 60     /**
 61      * 关闭连接
 62      * @param client
 63      * @return
 64      */
 65     private boolean closeConnection(FTPClient client) {
 66         System.out.println("closeConnection--");
 67         if (client == null) {
 68             return true;
 69         }
 70         if (client.isConnected()) {
 71             try {
 72                 client.disconnect(true);
 73                 return true;
 74             } catch (Exception e) {
 75                 try {
 76                     client.disconnect(false);
 77                     return true;
 78                 } catch (Exception ex) {
 79                     ex.printStackTrace();
 80                     return false;
 81                 }
 82             }
 83
 84         }
 85         return true;
 86     }
 87
 88     /**
 89      * 创建目录
 90      * @param name
 91      */
 92     private void createFile(String name) {
 93         System.out.println("createFile--name=" + name);
 94         try {
 95             if (client == null) {
 96                 return;
 97             }
 98             String currentpath = client.currentDirectory();
 99             System.out.println("currentpath=" + currentpath);
100
101
102             client.createDirectory(name);
103         } catch (IllegalStateException e) {
104             // TODO Auto-generated catch block
105             e.printStackTrace();
106         } catch (IOException e) {
107             // TODO Auto-generated catch block
108             e.printStackTrace();
109         } catch (FTPIllegalReplyException e) {
110             // TODO Auto-generated catch block
111             e.printStackTrace();
112         } catch (FTPException e) {
113             // TODO Auto-generated catch block
114             e.printStackTrace();
115         }
116     }
117
118     /**
119      * 上传文件
120      * @param localpath        本地地址
121      * @param fpath        服务器地址
122      * @return
123      */
124     private boolean upLoadFile(String localpath, String fpath) {
125         System.out.println("upLoadFile--localpath=" + localpath + "--fpath="
126                 + fpath);
127         if (client == null) {
128             return false;
129         }
130         try {
131             if (!client.currentDirectory().equals(fpath)) {
132                 client.changeDirectory(fpath);
133             }
134             File file = new File(localpath);
135             System.out.println("up start");
136             client.upload(file);
137             System.out.println("up end");
138         } catch (Exception e) {
139             e.printStackTrace();
140             return false;
141         }
142         return true;
143     }
144
145     /**
146      * 下载文件
147      * @param fpath 服务器文件地址
148      * @param localfile 本地文件
149      * @return
150      */
151     private boolean downFile(String fpath, File localfile) {
152         System.out.println("downFile--fpath="+fpath);
153         try {
154             if (localfile.exists() && localfile.isFile()) {
155                 client.download(fpath, localfile, localfile.length(), null);
156             } else {
157                 client.download(fpath, localfile);
158             }
159             return true;
160         } catch (Exception e) {
161             e.printStackTrace();
162             return false;
163         }
164
165     }
166
167     /**
168      * 获取当前路径下的文件列表
169      * @return
170      */
171     private String[] getDirList() {
172         System.out.println("getDirList--");
173         if (client == null) {
174             return null;
175         }
176         try {
177             String[] list = client.listNames();
178             return list;
179         } catch (Exception e) {
180             e.printStackTrace();
181             return null;
182         }
183
184     }
185
186 }
187                 

  

 

转载于:https://www.cnblogs.com/mingrenao/p/3878681.html

ftp4j的android应用相关推荐

  1. Android中FTP服务器、客户端搭建以及SwiFTP、ftp4j介绍

    本文主要内容: 1.FTP服务端部署---- 基于Android中SwiFTP开源软件介绍: 2.FTP客户端部署 --- 基于ftp4j开源jar包的客户端开发 : 3.使用步骤 --- 如何测试我 ...

  2. android 下 ftp 客户端软件编写(ftp4j)

    java中的ftp4j是个不错的框架,可以用于java实现ftp的一些操作.  这个框架已经实现了ftp的功能,如果需要移植到android,就需要一些界面元素与后台进程.  android这样直接利 ...

  3. android ftp 客户端编写(ftp4j)

    转自: http://phenom.iteye.com/blog/1551554 java中的ftp4j是个不错的框架,可以用于java实现ftp的一些操作.  这个框架已经实现了ftp的功能,如果需 ...

  4. android客户端是手机版下载视频格式,Android手机FTP客户端开发

    FTP简介FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应 ...

  5. Unity5.6+ 导出Android 应用程序apk的环境配置及导出过程

    首先下载并安装安卓SDK和java的JDK 安卓sdk下载: http://www.android-studio.org/ 也可以在这下载: 链接:http://pan.baidu.com/s/1bp ...

  6. Android 的NDK的Makefile编写

    Android.mk 是google根据Linux GNU Makefile精简编译脚本.具体来说:这就是GNU Makefile的一小部分. 举一个简单例子: LOCAL_PATH := $(cal ...

  7. Android Animation (安卓动画)概念简介

    Android Animation Android 四种动画分别为逐帧动画和补间动画.属性动画.过渡动画: Frame Animation (逐帧动画) 实现方式:xml 和 Java代码 图片跳转的 ...

  8. 基于Android和SpringBoot的购物App

    (Shopping)购物应用商城 本软件使用Android和SpringBoot.JavaWeb技术实现:并结合百度LBS平台的SDK.支付宝App支付客户端SDK.MobTech的ShareSDK: ...

  9. Android数据持久化:SharePreference

    SharePreference:作为Android数据持久化的一种,具有一定的便捷性,适合存储一些体积小的数据. 存储数据方式:键值对的方式,类似于Map: 利用SharePreference.Edi ...

最新文章

  1. 如何向mysql表中添加数据类型_java中怎么把data类型的数据添加到数据库?
  2. 树莓派nginx无法安装mysql_树莓派上安装nginx
  3. jquery中Live方法不可用,Jquery中Live方法失效
  4. boot loader能全部用C程序编写吗
  5. 域查看工具开源_SEO人员,如何为网站开源节流?
  6. 如何定制化SAP Fiori标准应用里UI字段的标签
  7. 如何使用redis来实现常见的游戏排行榜
  8. 生成jsp验证码的代码详解(servlet版)
  9. Python判断两个域名的主域名是否相同
  10. C ++ 类 | 类与数组(Array)_4
  11. mysql怎么查主键是否重复数据库_数据库插入前判断主键重复与否的方法
  12. leetcode题解—1021、删除最外层的括号
  13. 应用安全 - 代码审计 -Java
  14. Google搜索技巧终极收集
  15. 手机浏览器和pc浏览器下载文件方法
  16. 【计算理论】正则语言 ( 正则语言运算 | 正则语言封闭性 )
  17. B站粉丝计数软件(python开发)
  18. 经典回味:ResNet到底在解决一个什么问题呢?
  19. python压缩文件夹为zip_python压缩文件夹内所有文件为zip文件的方法
  20. W3Cschool从零开始学C语言笔记(1-2)位、字节及排列组合

热门文章

  1. Recompile/upgrade nginx binary with no down-time
  2. Rust 修复隐秘的ReDoS 漏洞
  3. Veeam 数据备份解决方案修复多个严重漏洞
  4. 多家航空巨头遭大规模供应链攻击
  5. RigUp 数据库暴露7.6万份美国能源行业文件
  6. C语言如何动态分配空间:malloc
  7. DBA主宰一切请求,MySQL 查询重写
  8. BZOJ5329:[SDOI2018]战略游戏(圆方树,虚树)
  9. 教程 | 一个基于TensorFlow的简单故事生成案例:带你了解LSTM
  10. Windows绘图中的GDI映射模式