一、背景

大型系统架构往往被分解为多个独立可运行的组件, 以满足性能、可靠性、可扩展性的需求。多个组件间的数据交互往往采用两种方式:小量数据通过Sock函数、RMI、WebService等接口方式传递;大量采用文件方式传递。
采用文件传递数据有两种方式:通过Windows的NFS系统,文件共享。采用FTP/SFTP做文件上传、下载。本文讲解采用FTP服务传递文件时,FTP服务器环境搭建及公共代码组件。

二、FTP Server环境搭建

2.1 下载开源组件Apache Server 1.0.6版本

到官方网站下载http://mina.apache.org/ftpserver-project

2.2 在users.properties配置文件添加用户名和密码

2.3 在ftpd-typical.xml设置端口,密码是否加密(本配置文件清除密码加密)

2.4 运行FTP Server

命令行执行:start “apache ftp server….” bin\ftpd.bat res\conf\ftpd-typical.xml

三、FTP客户端访问公共组件

3.1 添加commons-net-3.3.jar包到Eclipse.

3.2 公共基础类

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;public class FTPUtility { private String ftpIP = ""; private int ftpPort = 0; private String userName = ""; private String passWord = ""; FTPClient client = null; /** * 构造函数,初始化连接FTP服务器的参数。 * @param ftpIP 服务器IP地址 * @param ftpPort 服务器端口 * @param userName 登陆用户名 * @param passWord 登陆密码 */ public FTPUtility(String ftpIP, int ftpPort, String userName, String passWord) { this.ftpIP = ftpIP; this.ftpPort = ftpPort; this.userName = userName; this.passWord = passWord; } /** * 连接FTP服务器。 * @return true: 连接成功; false:连接失败 */ public boolean connet() { // 1、连接FTP服务器 client = new FTPClient(); try { client.connect(ftpIP, ftpPort); client.login(userName, passWord); // 文件按二进制传输,按ASCII码传输EXCEL文件会被损坏。 client.setFileType(FTPClient.BINARY_FILE_TYPE); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 2、检验返回码,是否连接成功。 int replyCode = client.getReplyCode(); if (!FTPReply.isPositiveCompletion(replyCode)) { try { client.disconnect(); } catch (IOException e) { e.printStackTrace(); } System.err.println("FTP server refused connection."); return false; } return true; } /** * 上传文件到FTP服务器 * @param localFilePath 待上传的本地文件完整路径 * @param ftpFileName 上传后保存到FTP服务器的名称(一般和本地文件名一致) * @throws IOException IO异常 */ public void upLoadFile(String localFilePath, String ftpFileName) throws IOException { FileInputStream localIn = new FileInputStream(localFilePath); client.storeFile(ftpFileName, localIn); localIn.close(); } /** * 从FTP服务器下载文件到本地。 * @param ftpFileName 所下载文件在FTP服务器上的名称 * @param localFilePath 下载后文件保存的完整路径(文件名一般和FTP上保存的文件一致) * @throws IOException IO异常 */ public void downLoadFile(String ftpFileName, String localFilePath) throws IOException { FileOutputStream localOut = new FileOutputStream(localFilePath); client.retrieveFile(ftpFileName, localOut); localOut.close(); } /** * 关闭FTP连接 * @throws IOException */ public void disconnet() throws IOException { client.logout(); } }
  • 1

四、客户端测试代码

public class TestMain
{public static void main(String[] args) { FTPUtility ftp = new FTPUtility("10.70.60.60", 2121, "admin", "admin"); if(!ftp.connet()) { return; } try { ftp.upLoadFile("d:/temp/IBMS_NE_T.txt", "IBMS_NE_T.txt"); ftp.upLoadFile("d:/temp/2保修合同4.xlsx", "2保修合同4.xlsx"); ftp.downLoadFile("IBMS_NE_T.txt", "d:/temp/IBMS_NE_T_new.txt"); ftp.downLoadFile("2保修合同4.xlsx", "d:/temp/2保修合同4_new.xlsx"); ftp.disconnet(); } catch (IOException e) { e.printStackTrace(); } } }

转载于:https://www.cnblogs.com/telwanggs/p/7448519.html

FTP环境搭建及客户代码调用公共方法封装相关推荐

  1. SFTP环境搭建及客户代码调用公共方法封装

    一.背景 在开发应用软件的过程中,广泛使用FTP在各子系统间传送文本数据.但FTP存在安全问题,开放到外网存在安全漏洞,容易被攻击.替换方案是使用SFTP,SFTP提供更高的安全性,当然传输的效率也会 ...

  2. Angularjs调用公共方法与共享数据

    这个问题场景是在使用ionic开发页面的过程中发现,多个页面对应的多个controller如何去调用公共方法,比如给ionic引入了toast插件,如何将这个插件的调用变成公共方法或者设置成工具类,因 ...

  3. Winform C#客户端调用接口方法封装

    Winform C#客户端调用接口方法封装 编码中,偶尔需要调用其他方提供的API或者其他端交互的API.封装了常用的调用的get请求与post的请求. 接口返回值为Json,复制返回值通过Visua ...

  4. Angular中怎样创建service服务来实现组件之间调用公共方法

    场景 Angular介绍.安装Angular Cli.创建Angular项目入门教程: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...

  5. python环境安装opencv,Python环境搭建之OpenCV的步骤方法

    一.openCV介绍 Open Source Computer Vision Library.OpenCV于1999年由Intel建立,如今由Willow Garage提供支持.OpenCV是一个基于 ...

  6. 高通Hexagon环境搭建和camera_streaming example运行方法

    搭建Hexagon环境可以在windows和linux下进行,本文档以linux虚拟机环境搭建Hexagon环境说明: 首先是在Linux环境下安装QPM(Qualcomm Package Manag ...

  7. python调用公共方法_common: 这是一个Python的公共工具类,集成了各种主要的python常用方法...

    common 介绍 这是一个Python的公共工具类,集成了各种主要的python常用方法. 本人是做java开发的,学习python很多情况下是把他当做一个脚本来使用,在使用的过程中,发现很多的功能 ...

  8. ORACLE DataGuard环境搭建详细步骤(新方法)

    一:实验环境介绍 ***鉴于生产环境均采用64位系统和数据库软件,本实验也将采用这个标准***采用vmware workstation 10(版本随意,我用的10)虚拟机软件作为安装平台对于真机的要求 ...

  9. Update 15.2 Dynamics 365 Business Central 2019 Release Wave 2 W1本地开发环境搭建报错问题-解决方法

    1.成功安装Update 15.2 Dynamics 365 Business Central 2019 Release Wave 2 W1后,NavServer已经启动,在VS环境中 搭建本地开发环 ...

最新文章

  1. 嵌入式Linux下跑自整定pid,告诉过你PID很重要,你不听
  2. 密码学原理与实践_到底什么是防火墙入侵检测密码学身份认证?如何高效建立网络安全知识体系?...
  3. 关于在Webservice里使用LinqToSQL遇到一对多关系的父子表中子表需要ToList输出泛型而产生循环引用错误的解决办法!...
  4. 直接插入排序及优化(二分查找插入排序)
  5. 阿里、京东被曝全面“缩招”;YY CEO 身体植入芯片;Oculus 创始人离职 | 极客头条...
  6. 关于阿里云,有什么故事?
  7. 北大中文核心期刊计算机类前30%名录
  8. 显卡测试软件velmon,furmark显卡测试工具
  9. downloadmedia php,PHP 利用MediaWiki 实现中文简繁互转代码 完美支持大陆、香港、台湾及新加坡...
  10. 腾讯 2016届实习生招聘笔试
  11. python招聘杭州拉勾网_Python3获取拉勾网招聘信息
  12. 认知突围_移动应用:突围
  13. 【推荐】jquery开发的大型web应用—H5编辑器工具
  14. Android 收银机Wifi 连接厨房厨单打印机
  15. [学习记录]realsence d455 +vins-fusion+px4+ego_planner下无人机的悬停与控制
  16. 如何将python项目部署到服务器_怎么把python部署到服务器
  17. 盘点 | 2020大数据十大关键词与趋势新鲜出炉
  18. GSM模块联网 GPRS上传物联网云平台调试笔记
  19. python 波形包络线_Python在信号与系统中的应用(1)——Hilbert变换,Hilbert在单边带包络检波的应用,FIR_LPF滤波器设计,还有逼格高高的FM(PM)调制...
  20. Windows命令行用法

热门文章

  1. python sqlalchemy orm
  2. Linux脚本5秒后启动程序,嵌入式Linux启动时间优化的秘密之四-启动脚本
  3. (15)FPGA面试技能提升篇(TDD-LTE协议、GTX IP)
  4. php 错误提示模板,php 关闭错误提示方法总结与性能分析
  5. 12025.petalinux 之phy调试ping(三)
  6. android小程序_小程序踩坑记
  7. mysql 表结构监控_性能测试之mysql监控、优化
  8. Linux uart驱动框架
  9. RT-Thread下的串口驱动程序分析
  10. TCP协议的部分解析(2)