ftp4j的android应用

  最近在项目中接触到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                 

 

  

 
posted @ 2014-07-31 10:23  小番茄和西红柿  阅读(1915)  评论(0编辑  收藏  举报