Android开发 之 利用commons-net-3.0.1.jar包实现FTP上传下载功能
2013-10-16 15:44
836 查看
参考原文链接地址:
http://blog.csdn.net/ljphhj/article/details/11859593#comments
感谢作者:胖虎 无私的提供Demo,以及其在我实现过程中的指导!谢谢!
1、搭建环境
本文实现的Android访问FTP服务器,实现上传和下载的功能
是利用的Apache公司出的commons-net-3.0.1.jar包。
关于jar包的引用,可以参看我的另外一个博客。
http://blog.csdn.net/liuyixin01/article/details/12685067
2、关于FTP服务器
本文的测试FTP是在自己电脑(内部局域网)上利用Serv-U搭建的环境。
FTP服务器地址:219.231.164.115
FTP服务器断口:21
登陆账号:yixin
登陆密码:yixin
3、Demo例程源码
[在工程中建立一个Activity,起名为:FtpActivity]
[在工程中建立一个class,起名为:FTPUtils]
主Activity:FtpActivity
工具类:FTPUtils
4、配置Android XML文件
a/设置Button信息,对layout中的activity_ftp.xml进行修改,加入按键
b/由于用到了String中的值,也需要在values的strings.xml 中加入字符名
c/对安卓程序加入访问Internet权限,对AndroidManifest.xml进行修改
d/对安卓程序加入读写SD卡权限,对AndroidManifest.xml进行修改
5、注意事项
a/FTPUtils类中uploadFile方法的调用
比如要上传到ftp根目录下的ftpdata文件夹下,要上传的文件ceshi.mp4在SD卡的ftpdata文件夹下,代码为:
ftpUtils.uploadFile("/sdcard/ftpdata/ceshi.mp4", "ceshi.mp4");
b/FTPUtils类中downLoadFile方法的调用
比如我要下载ftp根目录下的ftpdata文件夹下ceshi.mp4到SD卡的ftpdata文件夹下,代码为:
ftpUtils.downLoadFile("/sdcard/data/ceshi.mp4", "ceshi.mp4");
http://blog.csdn.net/ljphhj/article/details/11859593#comments
感谢作者:胖虎 无私的提供Demo,以及其在我实现过程中的指导!谢谢!
1、搭建环境
本文实现的Android访问FTP服务器,实现上传和下载的功能
是利用的Apache公司出的commons-net-3.0.1.jar包。
关于jar包的引用,可以参看我的另外一个博客。
http://blog.csdn.net/liuyixin01/article/details/12685067
2、关于FTP服务器
本文的测试FTP是在自己电脑(内部局域网)上利用Serv-U搭建的环境。
FTP服务器地址:219.231.164.115
FTP服务器断口:21
登陆账号:yixin
登陆密码:yixin
3、Demo例程源码
[在工程中建立一个Activity,起名为:FtpActivity]
[在工程中建立一个class,起名为:FTPUtils]
主Activity:FtpActivity
package com.example.ftptest_apache; import java.security.PublicKey; import android.R.anim; import android.os.Bundle; import android.os.StrictMode; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; /* * 1.文件上传到FTP服务器 * 2.从FTP服务器上下载文件 */ public class FtpActivity extends Activity implements OnClickListener { //buttons private Button buttonUpLoad = null; private Button buttonDownLoad=null; //FTP工具类 private FTPUtils ftpUtils = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ftp); //获取控件对象 buttonUpLoad=(Button)findViewById(R.id.button_1); buttonDownLoad=(Button)findViewById(R.id.button_2); //设置控件相应函数 buttonUpLoad.setOnClickListener(this); buttonDownLoad.setOnClickListener(this); //搭建环境的API Level必须大于等于9 if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } //初始化和FTP服务器交互的类 InitFTPServerSetting(); } public void InitFTPServerSetting() { ftpUtils = FTPUtils.getInstance(); boolean flag = ftpUtils.initFTPSetting("219.231.164.115", 21, "yixin", "yixin"); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button_1:{ //上传文件 ftpUtils.uploadFile("/sdcard/ftpdata/ceshi.mp4", "ceshi.mp4"); }break; case R.id.button_2:{ //下载文件 //参数为:要存放的文件路径和远程FTP文件名字 ftpUtils.downLoadFile("/sdcard/ftpdata/ceshi.mp4", "ceshi.mp4"); }break; default: break; } } }
工具类:FTPUtils
package com.example.ftptest_apache; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.SocketException; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; import android.R.string; import android.graphics.Bitmap.Config; import android.nfc.Tag; import android.util.Log; /* * 用于Android和FTP服务器进行交互的工具类 */ public class FTPUtils { private static final String Tag = null; private FTPClient ftpClient = null; private static FTPUtils ftpUtilsInstance = null; private String FTPUrl; private int FTPPort; private String UserName; private String UserPassword; private FTPUtils() { ftpClient = new FTPClient(); } /* 得到类对象实例 */ public static FTPUtils getInstance() { if (ftpUtilsInstance == null) { ftpUtilsInstance = new FTPUtils(); } return ftpUtilsInstance; } /* * 设置FTP服务器 * @param FTPUrl FTP服务器IP地址 * @param FTPPort FTP服务器端口号 * @param UserName 登陆FTP服务器的账号 * @param UserPassword 登陆FTP服务器的密码 */ public boolean initFTPSetting(String FTPUrl,int FTPPort,String UserName,String UserPassword) { this.FTPUrl = FTPUrl; this.FTPPort= FTPPort; this.UserName=UserName; this.UserPassword=UserPassword; int reply; try { //1.要连接的FTP服务器的地址、端口 ftpClient.connect(FTPUrl,FTPPort); //2.登陆FTP服务器 ftpClient.login(UserName, UserPassword); //3.看返回值是不是230,如果是,表示登陆成功 reply = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { //断开连接 ftpClient.disconnect(); return false; } return true; } catch (SocketException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } } /* * 上传文件 * @param FilePath 要上传文件所在的SDCard的路径 * @param FileName 要上传文件的文件名(如:SIM的唯一标识码) * @return true为成功, false为失败 */ public boolean uploadFile(String FilePath,String FileName) { //判断FTP是否仍在连接 if (!ftpClient.isConnected()) { if (!initFTPSetting(FTPUrl, FTPPort, UserName, UserPassword)) { return false; } } try { //1.设置存储路径 ftpClient.makeDirectory("/ftpdata"); ftpClient.changeWorkingDirectory("/ftpdata"); //2.设置上传文件需要的一些基本信息 ftpClient.setBufferSize(1024); ftpClient.setControlEncoding("UTF-8"); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); //3.文件上传 FileInputStream fileInputStream = new FileInputStream(FilePath); ftpClient.storeFile(FileName, fileInputStream); //4.关闭文件流 fileInputStream.close(); //5.退出登录FTP,关闭ftpClient连接 ftpClient.logout(); ftpClient.disconnect(); } catch (IOException e) { Log.d(Tag, "UpLoad failed"); //输出错误消息 e.printStackTrace(); return false; } return false; } /* * 下载文件 * @param FilePath 要存放的文件路径 * @param FileName 远程FTP服务器上的那个文件的名字 * @return true为成功, false为失败 */ public boolean downLoadFile(String FilePath,String FileName) { //判断FTP是否仍在连接 if (!ftpClient.isConnected()) { if (!initFTPSetting(FTPUrl, FTPPort, UserName, UserPassword)) { return false; } } try { //1.转到指定的下载目录 ftpClient.changeWorkingDirectory("/ftpdata"); //2.列出该目录下的所有文件 FTPFile[] files = ftpClient.listFiles(); //3.遍历所有文件,找到指定的文件 for (FTPFile file : files) { String fileName = file.getName(); if (file.getName().equals(FileName)) { //根据绝对路径初始化文件 File localFile = new File(FilePath); //输出流 FileOutputStream outputStream = new FileOutputStream(localFile); //下载文件 ftpClient.retrieveFile(file.getName(), outputStream); //关闭流 outputStream.close(); } } //4.退出登录FTP,关闭ftpClient的连接 ftpClient.logout(); ftpClient.disconnect(); } catch (IOException e) { // TODO: handle exception Log.d(Tag, "DownLoad failed"); e.printStackTrace(); return false; } return true; } }
4、配置Android XML文件
a/设置Button信息,对layout中的activity_ftp.xml进行修改,加入按键
<Button android:id="@+id/button_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/UpLoad"/> <Button android:id="@+id/button_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/DownLoad" />
b/由于用到了String中的值,也需要在values的strings.xml 中加入字符名
<string name="UpLoad">UpLoad</string> <string name="DownLoad">DownLoad</string>
c/对安卓程序加入访问Internet权限,对AndroidManifest.xml进行修改
<uses-permission android:name="android.permission.INTERNET" />
d/对安卓程序加入读写SD卡权限,对AndroidManifest.xml进行修改
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
5、注意事项
a/FTPUtils类中uploadFile方法的调用
* 上传文件 * @param FilePath要上传文件所在的SDCard的路径 * @param FileName要上传文件的文件名(如:SIM的唯一标识码) * @return true为成功, false为失败 */ public boolean uploadFile(String FilePath,String FileName)
比如要上传到ftp根目录下的ftpdata文件夹下,要上传的文件ceshi.mp4在SD卡的ftpdata文件夹下,代码为:
ftpUtils.uploadFile("/sdcard/ftpdata/ceshi.mp4", "ceshi.mp4");
b/FTPUtils类中downLoadFile方法的调用
* 下载文件 * @param FilePath 要存放的文件路径 * @param FileName 远程FTP服务器上的那个文件的名字 * @return true为成功, false为失败 public boolean downLoadFile(String FilePath,String FileName)
比如我要下载ftp根目录下的ftpdata文件夹下ceshi.mp4到SD卡的ftpdata文件夹下,代码为:
ftpUtils.downLoadFile("/sdcard/data/ceshi.mp4", "ceshi.mp4");
相关文章推荐
- [Android中级]使用Commons-net-ftp来实现FTP上传、下载的功能
- 利用Apache的commons-net实现FTP的文件读取、上传、下载、删除和移动功能
- [Android中级]使用Commons-net-ftp来实现FTP上传、下载的功能
- 利用commons-net-3.2.jar实现ftp文件上传功能
- 基于commons-net实现ftp创建文件夹、上传、下载功能
- 利用FTPClient类实现文件的上传下载功能
- Android 服务器之FTP服务器上传下载功能的实现
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
- Android中FTP上传、下载的功能实现(含进度)
- 【FTP】使用org.apache.commons.net.ftp.FTPClient 实现FTP的上传下载
- Java实现Ftp上传和下载文件(依赖commons-net-3.3.jar)--FTPUtil.java
- Android利用FTP实现与PC的上传和下载,实现二维码扫描下载
- Java 利用Apache Commons Net 实现 FTP文件上传下载
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
- 使用commons-net实现FTP文件上传与下载工具类
- Android 利用commons-net-3.3实现ftp上传下载
- Java 利用Apache Commons Net 实现 FTP文件上传下载
- 利用FTPClient类实现文件的上传下载功能
- org.apache.commons.net.ftp.FTPClient上传、下载、修改文件等功能
- 利用FTPClient类实现文件的上传下载功能