java实现FTP和 SFTP连接远程服务器下载文件
前言
为什魔写这片文章呢,因为关于ftp和sftp的文章介绍的太少啦 。
提示:以下是本篇文章正文内容,下面案例可供参考
一、FTP是什么?如何实现。
来自百度百科 :文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。
1.实现代码
public class FtpTools {
public static Logger logger = SnowLog.getLogger(FtpTools.class);
private static String ftpHost; // IP
private static int ftpPort; // port
private static String ftpUserName; // 用户
private static String ftpPassword; // 密码
private static FTPClient ftpClient; // IP
/**
* 初始化ftp信息
* @param type
* @throws Exception
*/
public void init(String type) throws Exception {
logger.info("***********************初始化FTP信息***********************");
String hostMagicId = null;
String userNameMagicId = null;
String passWordMagicId = null;
String cbsPortMagicId=null;
if(InterConstants.FTP_CBS_01.equals(type)){
hostMagicId = "CBS_HOST";
userNameMagicId = "CBS_USERNAME";
passWordMagicId = "CBS_PASSWORD";
cbsPortMagicId="CBS_PORT";
}else{
SnowExceptionUtil.throwErrorException("ftp类型非法,初始化ftp信息失败");
}
TblSysParam selectHost = DBDaos.newInstance().select(TblSysParam.class, "FTP", hostMagicId);
if (selectHost == null) {
SnowExceptionUtil.throwErrorException("请配置FTP地址!");
}
ftpHost = selectHost.getParamValueTx();
TblSysParam selectPort = DBDaos.newInstance().select(TblSysParam.class, "FTP", cbsPortMagicId);
if (selectPort == null) {
SnowExceptionUtil.throwErrorException("请配置FTP端口!");
}
ftpPort = Integer.parseInt(selectPort.getParamValueTx());
TblSysParam selectUsername = DBDaos.newInstance().select(TblSysParam.class, "FTP", userNameMagicId);
if (selectUsername == null) {
SnowExceptionUtil.throwErrorException("请配置FTP用户名!");
}
ftpUserName = selectUsername.getParamValueTx();
TblSysParam selectPassword = DBDaos.newInstance().select(TblSysParam.class, "FTP", passWordMagicId);
if (selectPassword == null) {
SnowExceptionUtil.throwErrorException("请配置FTP密码!");
}
ftpPassword = selectPassword.getParamValueTx();
}
/**
* 连接ftp服务
* @throws Exception
*/
public void connectClient() throws Exception {
logger.info("***********************登录FTP***********************");
ftpClient = new FTPClient();
try {
ftpClient = new FTPClient();
ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器
ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
//设置编码
ftpClient.setControlEncoding("GBK");
ftpClient.setBufferSize(8096);
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
logger.info("未连接到FTP,用户名或密码错误。");
ftpClient.disconne