JAVA 搭建FTP服务器

FTP

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

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

FTP本地服务的搭建

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

2.搜索iis管理器,并新建FTP站点
这里写图片描述
这里写图片描述

3.选择共享的文件夹名称,并设置IP
这里写图片描述
这里写图片描述
端口一般默认21即可,SSL证书根据需要

4.配置登录用户及访问权限
这里写图片描述
应该简单明了,此处用户为系统登录账号。

5.连接ftp服务测试
打开我的电脑,在地址栏输入ftp://xxx.xxx.xxx.xxx
如果关闭了匿名登录,会出现
这里写图片描述
用系统登录账号登录即可。

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

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

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

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

踩雷

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

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只对目前所在位置生效。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
搭建JavaFTP服务器,您可以按照以下步骤进行操作: 1. 在pom.xml文件中添加FTP服务器的依赖和管理版本: ```xml <properties> <ftpserver.version>1.1.1</ftpserver.version> </properties> <dependencies> <dependency> <groupId>org.apache.ftpserver</groupId> <artifactId>ftpserver-core</artifactId> <scope>compile</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.apache.ftpserver</groupId> <artifactId>ftpserver-core</artifactId> <version>${ftpserver.version}</version> </dependency> </dependencies> </dependencyManagement> ``` 2. 编写Java代码来搭建FTP服务器。您可以使用Apache FtpServer来实现: ```java import org.apache.ftpserver.FtpServer; import org.apache.ftpserver.FtpServerFactory; import org.apache.ftpserver.listener.ListenerFactory; import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; public class FtpServerExample { public static void main(String[] args) throws Exception { FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory listenerFactory = new ListenerFactory(); listenerFactory.setPort(21); // 设置FTP服务器的端口号 serverFactory.addListener("default", listenerFactory.createListener()); PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); userManagerFactory.setFile(new File("users.properties")); // 指定用户属性文件的路径 serverFactory.setUserManager(userManagerFactory.createUserManager()); FtpServer server = serverFactory.createServer(); server.start(); } } ``` 3. 创建一个`users.properties`文件,用于指定FTP服务器的用户和密码。例如: ``` user1=password1,admin user2=password2 ``` 4. 运行Java代码,启动FTP服务器
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值