本文是本人做项目中遇到的问题,其中有一些坑。欢迎查看与转载:
1、引入SFTP jar包
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
</dependency>
2、写定时器类,定时上传至sftp服务器
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.jcraft.jsch.SftpException;
@Component
public class FtpUploadLogTask extends AbstractBaseTask {
Logger logger = LoggerFactory.getLogger(FtpUploadLogTask.class);
private static final ResourceBundle bundle = java.util.ResourceBundle.getBundle("config");
private String ftpIp = bundle.getString("ftpIp");
private String ftpUser = bundle.getString("ftpUser");
private int ftpPort = Integer.parseInt(bundle.getString("ftpPort"));
private String ftpPwd = bundle.getString("ftpPwd");
private String ftpRemotePath = bundle.getString("ftpRemotePath");
private String localAddress = bundle.getString("localAddress");
private LoadLogService loadLogService;
@SuppressWarnings("unused")
private Map<String, Object> map;
FtpUtils ftpUtils = new FtpUtils();
SFtpUtils sfTpUtils = new SFtpUtils();
@Override
public void init() {
}
@Override
public void work() {
logger.info("********上传登陆日志文件定时任务开始********");
try {
uploadTxtToFtp();
} catch (SftpException e) {
logger.error("********上传登陆日志文件定时任务失败:{}********", e);
}
logger.info("********上传登陆日志文件定时任务结束********");
}
public void uploadTxtToFtp() throws SftpException {
LogInfo logInfo = new LogInfo(this, Thread.currentThread().getStackTrace()[1].getMethodName());
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> result = new HashMap<>();
loadLogService = (LoadLogSer