Dwarfeng(赵扶风)的 FTP 服务,基于 subgrade
项目,在 commons-io
的基础上做了进一步封装,目前用于多个个人项目。
运行 src/test
下的示例以观察全部特性。
示例类名 | 说明 |
---|---|
ProcessExample | 流程示例 |
StreamExample | 流的使用示例 |
ListFileExample | 列出文件示例 |
RenameFileExample | 列出文件示例 |
ClearDirectoryExample | 清空目录示例 |
CopyFileExample | 复制文件示例 |
DescFileExample | 描述文件示例 |
该项目针对多个 FTP 服务端进行了测试,测试结果如下:
FTP 服务器类型 | 测试结果 |
---|---|
vsftpd | 通过 |
Windows 10 内置 FTP 服务器 | 通过 |
下载源码。
使用 git 进行源码下载。
git clone git@github.com:DwArFeng/dwarfeng-ftp.git
对于中国用户,可以使用 gitee 进行高速下载。
git clone git@gitee.com:dwarfeng/dwarfeng-ftp.git
项目安装。
进入项目根目录,执行 maven 命令
mvn clean source:jar install
项目引入。
在项目的 pom.xml 中添加如下依赖:
<dependency>
<groupId>com.dwarfeng</groupId>
<artifactId>dwarfeng-ftp</artifactId>
<version>${dwarfeng-ftp.version}</version>
</dependency>
enjoy it.
src/test
下的 Example
以观察全部特性。加载 com.dwarfeng.ftp.configuration.SingletonConfiguration
,即可获得单例模式的 FtpHandler
。
在项目的 application-context-scan.xml
中追加 com.dwarfeng.ftp.configuration
包中全部 bean 的扫描,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<!-- 扫描 configuration 包中的全部 bean。 -->
<context:component-scan base-package="com.dwarfeng.ftp.configuration"/>
</beans>
或者只扫描 com.dwarfeng.ftp.configuration
包中的 SingletonConfiguration
,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<!-- 扫描 configuration 包中的 SingletonConfiguration -->
<context:component-scan base-package="com.dwarfeng.ftp.configuration" use-default-filters="false">
<context:include-filter
type="assignable"
expression="com.dwarfeng.ftp.configuration.SingletonConfiguration"
/>
</context:component-scan>
</beans>
不使用包扫描,使用 xml 或者配置类生成 FtpHandlerImpl
实例。
在项目的 bean-definition.xml
中追加配置,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 以下注释用于抑制 idea 中 .md 的警告,实际并无错误,在使用时可以连同本注释一起删除。 -->
<!--suppress SpringBeanConstructorArgInspection, SpringXmlModelInspection, SpringPlaceholdersInspection -->
<beans
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
>
<!-- 第一个实例 -->
<bean name="configBuilder1" class="com.dwarfeng.ftp.struct.FtpConfig.Builder">
<constructor-arg name="host" value="${ftp.host.1}"/>
<constructor-arg name="username" value="${ftp.username.1}"/>
<constructor-arg name="password" value="${ftp.password.1}"/>
<property name="port" value="${ftp.port.1}"/>
<property name="serverCharset" value="${ftp.server_charset.1}"/>
<property name="connectTimeout" value="${ftp.connect_timeout.1}"/>
<property name="noopInterval" value="${ftp.noop_interval.1}"/>
<property name="bufferSize" value="${ftp.buffer_size.1}"/>
<property name="temporaryFileDirectoryPath" value="${ftp.temporary_file_directory_path.1}"/>
<property name="temporaryFilePrefix" value="${ftp.temporary_file_prefix.1}"/>
<property name="temporaryFileSuffix" value="${ftp.temporary_file_suffix.1}"/>
<property name="fileCopyMemoryBufferSize" value="${ftp.file_copy_memory_buffer_size.1}"/>
</bean>
<bean name="config1" factory-bean="configBuilder1" factory-method="build"/>
<bean name="instance1" class="com.dwarfeng.ftp.handler.FtpHandlerImpl">
<constructor-arg name="scheduler" ref="scheduler"/>
<constructor-arg name="config" ref="config1"/>
</bean>
<!-- 第二个实例 -->
<bean name="configBuilder2" class="com.dwarfeng.ftp.struct.FtpConfig.Builder">
<constructor-arg name="host" value="${ftp.host.2}"/>
<constructor-arg name="username" value="${ftp.username.2}"/>
<constructor-arg name="password" value="${ftp.password.2}"/>
<property name="port" value="${ftp.port.2}"/>
<property name="serverCharset" value="${ftp.server_charset.2}"/>
<property name="connectTimeout" value="${ftp.connect_timeout.2}"/>
<property name="noopInterval" value="${ftp.noop_interval.2}"/>
<property name="bufferSize" value="${ftp.buffer_size.2}"/>
<property name="temporaryFileDirectoryPath" value="${ftp.temporary_file_directory_path.2}"/>
<property name="temporaryFilePrefix" value="${ftp.temporary_file_prefix.2}"/>
<property name="temporaryFileSuffix" value="${ftp.temporary_file_suffix.2}"/>
<property name="fileCopyMemoryBufferSize" value="${ftp.file_copy_memory_buffer_size.2}"/>
</bean>
<bean name="config2" factory-bean="configBuilder2" factory-method="build"/>
<bean name="instance2" class="com.dwarfeng.ftp.handler.FtpHandlerImpl">
<constructor-arg name="scheduler" ref="scheduler"/>
<constructor-arg name="config" ref="config2"/>
</bean>
</beans>
自行设计 FtpHandler
的工厂类,调用相关工厂方法生成 FtpHandlerImpl
实例。
需要注意的是:生成的 FtpHandlerImpl
在使用之前需要调用 FtpHandlerImpl#start()
启动处理器;同时在使用完毕之后,
需要调用 FtpHandlerImpl#stop()
关闭处理器。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。