FTP

FTP是一种文件传输的协议,主要用于文件的上传和下载
FTP服务器就是一种支持FTP协议并用来作文件的中转服务器,WEB服务器也可同事作为FTP服务器。

目前在做C/S的系统,自然就涉及到了远程更新的方面,这也是C/S在系统维护方面的劣势。
然后我就想到了用FTP服务器来做一个文件的存储,在C/D中以线程监控或者运行或点击时检测是否有文件差异来进行一个远程的更新。

FTP本地服务的搭建

1.控制面板→程序→启动或关闭Windows功能,将ftp服务打开,telnet服务没开的也可以顺手打开。

ftp服务器java源码 java ftp服务端_下载文件

2.搜索iis管理器,并新建FTP站点

ftp服务器java源码 java ftp服务端_JAVA_02


ftp服务器java源码 java ftp服务端_JAVA_03

3.选择共享的文件夹名称,并设置IP

ftp服务器java源码 java ftp服务端_ftp服务器java源码_04


ftp服务器java源码 java ftp服务端_下载文件_05


端口一般默认21即可,SSL证书根据需要4.配置登录用户及访问权限

ftp服务器java源码 java ftp服务端_下载文件_06


应该简单明了,此处用户为系统登录账号。5.连接ftp服务测试

打开我的电脑,在地址栏输入ftp://xxx.xxx.xxx.xxx

如果关闭了匿名登录,会出现

ftp服务器java源码 java ftp服务端_服务器_07


用系统登录账号登录即可。

JAVA使用ftp4j连接操作FTP服务器

主要使用一个FTPClient来进行操作
简单的连接退出

client.connect(url, port);
client.login(ftpUser, ftpPwd);
client.disconnect(true);

文件上传下载之类的,这个类基本都封装了,
比较一下两边文件的差异,再通过下载即可实现远程更新。

踩雷

1.client通过.list()方法来列举该目录下的所有文件,这里会有一个日期格式的问题导致一直报错,有修改源码等几种方法,最简单的是在IIS中修改

ftp服务器java源码 java ftp服务端_FTP_08

2.
client文件下载

client.download(ftpFile.getName(), new File(path + "/" + ftpFile.getName()), listener);

new File()输出的是本地的保存路径,但是ftpFile.getName();的路径是跟随

client.changeDirectory(ftpFile.getName());

的修改而修改的,比方你要下载文件夹A下的A1文件,就需要先跳转目录再下载

client.changeDirectory("A");
 client.download("A1", new File("A/A1"), listener);

然后踩了无数个坑,绝对路径相对路径盘符什么的统统不管用,changeDirectory只对目前所在位置生效。