FTP-作为Android开发,你应当了解

很久没更新文档了,1 : 确实很忙;2.自己学习的路还很长,知其然不知所以然的东西还很多。
知识点回顾 首先,我们来看下FTP相关定义:
  • 文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。我们要分清文件传送(file transfer)和文件访问(file access)之间的区别,前者是FTP提供的,后者是如NFS等应用系统提供的。
  • FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
  • FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。
  • 运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。
Android中使用 在Android中我们可以使用第三方的库来操作FTP,比如Apache的包,commons-net-3.6.jar。下载地址http://commons.apache.org/proper/commons-net/download_net.cgi。
如何使用
  1. 初始化FTPClinet,代码如下:
ftpClient = new FTPClient();

2.设置登录地址和端口号,代码如下:
ftpClient.connect(TrackConstants.FTP_URL, TrackConstants.FTP_PORT);

3.设置登录用户名和密码,代码如下:
ftpClient.login(TrackConstants.FTP_USERNAME, TrackConstants.FTP_PWD);

4.设置文件类型和采用被动传输方式,代码如下:
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

5.传输文件,代码如下:
//文件上传吧~ FileInputStream fileInputStream = new FileInputStream(FilePath); ftpClient.storeFile(FileName, fileInputStream);

6.关闭连接,代码如下:
//关闭文件流 fileInputStream.close(); //退出登陆FTP,关闭ftpCLient的连接 ftpClient.logout(); ftpClient.disconnect();

小提醒 主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
Android FTP客户端核心代码如下:
new Thread() { @Override public void run() { super.run(); try { //1.要连接的FTP服务器Url,Port ftpClient.connect(TrackConstants.FTP_URL, TrackConstants.FTP_PORT); //2.登陆FTP服务器 ftpClient.login(TrackConstants.FTP_USERNAME, TrackConstants.FTP_PWD); //3.看返回的值是不是230,如果是,表示登陆成功 int reply = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { //断开 ftpClient.disconnect(); return; }//设置存储路径 ftpClient.makeDirectory("/data/" + directory ); ftpClient.changeWorkingDirectory("/data/" + directory); //设置上传文件需要的一些基本信息 ftpClient.setBufferSize(1024); ftpClient.setControlEncoding("UTF-8"); //ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); //文件上传吧~ FileInputStream fileInputStream = new FileInputStream(FilePath); ftpClient.storeFile(FileName, fileInputStream); //关闭文件流 fileInputStream.close(); //退出登陆FTP,关闭ftpCLient的连接 ftpClient.logout(); ftpClient.disconnect(); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start();

作者:微信公众号添加公众号-遛狗的程序员 ,或者可以扫描以下二维码关注相关技术文章。
FTP-作为Android开发,你应当了解
文章图片
qrcode_for_gh_1ba0785324d6_430.jpg
【FTP-作为Android开发,你应当了解】当然喜爱技术,乐于分享的你也可以可以添加作者微信号:
FTP-作为Android开发,你应当了解
文章图片
WXCD.jpeg

    推荐阅读