Android FTP 开发,我个人是使用commons-net-3.1.jar,别问我为什么是度娘教我的,附上commons-net-3.1.jar的开源下载地址http://grepcode.com/snapshot/repo1.maven.org/maven2/commons-net/commons-net/3.1


关于FTP我们在Android开发的时候先说一下特别需要注意,就当是正餐之前调味吧。

1.FTP是基于TCP/IP协议的常用端口是:21,也就是如果不设置端口实际上就是访问了21端口

2.FTP编程要特别考虑到编码的问题,尤其是要和FTP服务的编码能匹配,实际上一搬都是UTF-8,Android也是UTF-8,所以大部分时候没问题,但是一旦乱码就要想想是不是客户端的编码和服务端编码不匹配了。

3.由于Android上编程要求任何带网若访问的类不能放在主UI的绚烂线程,所以一定要注意另开线程使用这个包里FTP类org.apache.commons.net.ftp.FTPClient。

4.记得 加在AndroidManifest.xml之后

5.注意FTP服务起如果和客户端长时间没有信息交互可能会自动断开当前连接,所以根据实际情况每隔一段时间调用FTPClient类下的sendNoOp()方法这类似于心跳包。


下面是正餐直接上Demo效果图,有图有真相呵呵,功能一目了然,上传下载都有进度条,贴出源码下载地址,只要1分。


我封装一个工具类UitlsFTP(见源码),来处理FTP的连接,上传/下载,都是带进度的额
说一下代码的中关键小技巧部分,虽然利用重写InputStream的Read方法可以轻松实现进度监控,但是为了绚烂UI时节约性能,可以根据实际情况选择每隔300ms或是200ms渲染一次进度,我这里就是200ms绚烂一次

UtilsFTP.IProgressListener listener = new UtilsFTP.IProgressListener() {long BEG=0;@Overridepublic void onProgress(long len, long total) {if(System.currentTimeMillis()-BEG>200||len==total){BEG=System.currentTimeMillis();String result = String.format("%.2f", 100 * (double) len / (double) total);showTV(result + "%");}}};InputStream in2 = self.getResources().getAssets().open("a.mp3");ftp.uploadWithProgress("001test/download3/我.mp3", in2, listener);


更多相关文章

  1. Android百度地图使用之定位和地理、反地理编码
  2. 设置android编码格式与包的引入格式于源码一致
  3. Android(安卓)谷歌gcm推送所需要的端口
  4. Android进度条——ProgressDialog
  5. Android(安卓)SeekBar
  6. Android(安卓)web界面丝滑进度条
  7. android socket通讯,PC和模拟器,两个模拟器之间的通信
  8. Android(安卓)百分比、水波、流量剩余进度球的实现
  9. android APK签名过程之MANIFEST.MF分析

随机推荐

  1. 用gradle编译任意结构的Android项目
  2. Android中的PopupWindow详解
  3. Android面临困境:系统现碎片化 开发者兴
  4. HorizontalScrollView不显示滚动条,布局完
  5. rk3326 android 8.1 上传sftp时候jsch类
  6. 40、DrawerLayout使用详情
  7. Professional Android(安卓)2 Developmen
  8. 2015-10-30-03-Android Log使用心得
  9. Android:adb发送系统广播及自定义广播
  10. Android 手机制式和网络类型 GSM/EDGE/CD