区别
FTP是一种文件传输协议,一般是为了方便数据共享的。包括一个FTP服务器和多个FTP客户端。FTP客户端通过FTP协议在服务器上下载资源。FTP客户端通过FTP协议在服务器上下载资源。而一般要使用FTP需要在服务器上安装FTP服务。
而SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全,但是传输的效率比FTP要低,传输速度更慢(不过现实使用当中,没有发现多大差别)。SFTP和SSH使用的是相同的22端口,因此免安装直接可以使用。
总结:
一;FTP要安装,SFTP不要安装。
二;SFTP更安全,但更安全带来副作用就是的效率比FTP要低。
FtpUtil
<!--ftp文件上传-->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.*;
@Component
public class FtpUtil {
private static final Logger logger = LoggerFactory.getLogger(FtpUtil.class);
//ftp服务器地址
@Value("${ftp.server}")
private String hostname;
//ftp服务器端口
@Value("${ftp.port}")
private int port;
//ftp登录账号
@Value("${ftp.userName}")
private String username;
//ftp登录密码
@Value("${ftp.userPassword}")
private String password;
/**
* 初始化FTP服务器
*
* @return
*/
public FTPClient getFtpClient() {
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("UTF-8");
try {
//设置连接超时时间
ftpClient.setDataTimeout(1000 * 120);
logger.info("连接FTP服务器中:" + hostname + ":" + port);
//连接ftp服务器
ftpClient.connect(hostname, port);
//登录ftp服务器
ftpClient.login(username, password);
// 是否成功登录服务器
int replyCode = ftpClient.getReplyCode();
if (FTPReply.isPositiveCompletion(replyCode)) {
logger.info("连接FTP服务器成功:" + hostname + ":" + port);
} else {
logger.error("连接FTP服务器失败:" + hostname + ":" + port);
closeFtpClient(ftpClient);
}
} catch (IOException e) {
logger.error("连接ftp服务器异常", e);
}
return ftpClient;
}
/**
* 上传文件
*
* @param pathName 路径
* @param fileName 文件名
* @param inputStream 输入文件流
* @return
*/
public boolean uploadFileToFtp(String pathName, String fileName, InputStream inputStream) {
boolean isSuccess = false;
FTPClient ftpClient = getFtpClient();
try {
if (ftpClient.isConnected()) {
logger.info("开始上传文件到FTP,文件名称:" + fi

本文对比了FTP与SFTP两种文件传输协议的区别,包括安全性、安装需求及传输效率等方面,并提供了Java实现的FtpUtil与SFTPUtil工具类示例。
最低0.47元/天 解锁文章
4714

被折叠的 条评论
为什么被折叠?



