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,代码如下:
1
ftpClient = new FTPClient();

2.设置登录地址和端口号,代码如下:

1
ftpClient.connect(TrackConstants.FTP_URL, TrackConstants.FTP_PORT);

3.设置登录用户名和密码,代码如下:

1
ftpClient.login(TrackConstants.FTP_USERNAME, TrackConstants.FTP_PWD);

4.设置文件类型和采用被动传输方式,代码如下:

1
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

5.传输文件,代码如下:

1
2
3
//文件上传吧~
FileInputStream fileInputStream = new FileInputStream(FilePath);
ftpClient.storeFile(FileName, fileInputStream);

6.关闭连接,代码如下:

1
2
3
4
5
6
//关闭文件流
fileInputStream.close();
//退出登陆FTP,关闭ftpCLient的连接
ftpClient.logout();
ftpClient.disconnect();

小提醒

主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。

Android FTP客户端核心代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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();

作者:微信公众号添加公众号-遛狗的程序员 ,或者可以扫描以下二维码关注相关技术文章。

qrcode_for_gh_1ba0785324d6_430.jpg
当然喜爱技术,乐于分享的你也可以可以添加作者微信号:

WXCD.jpeg

文章目录
  1. 1. 知识点回顾
  2. 2. Android中使用
    1. 2.0.0.1. 如何使用
  • 3. 小提醒
    1. 3.0.0.1. Android FTP客户端核心代码如下:
  • |