您的位置:首页 > 编程语言 > PHP开发

sftp 工具类

2015-11-18 15:47 691 查看
/**
* 创建于:2015年11月16日 上午10:34:19
* 所属项目:
* 文件名称:SftpUtil.java
* 作者:test
* 版权信息:
*/
package sftp;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;

import org.apache.log4j.Logger;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;

public class SftpUtil {
private static Logger logger = Logger.getLogger(SftpUtil.class);

public static void main(String[] args) throws SftpException {
SftpUtil sftpUtil = new SftpUtil();
ChannelSftp sftp = sftpUtil.connect("192.168.8.18", 22, "test", "test");
//sftpUtil.download("tomcat/logs", "localhost_access_log.2015-11-13.txt", "E:/manager.2015-11-18.log", sftp);

//sftpUtil.upload("", "E:/pom.xml", sftp);

sftpUtil.delete("tomcat/logs", "pom.xml", sftp);

sftpUtil.disconnect(sftp);
logger.info("完成了");
}
/**
* 连接sftp服务器
* @param host 主机
* @param port 端口
* @param username 用户名
* @param password 密码
* @return
*/
public ChannelSftp connect(String host, int port, String username, String password) {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
Session sshSession = jsch.getSession(username, host, port);
sshSession.setPassword(password);
Properties sshConfig = new Properties();
// 如果设置成“yes”,ssh就不会自动把计算机的密钥加入“$HOME/.ssh/known_hosts”文件
// 并且一旦计算机的密钥发生了变化,就拒绝连接
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
Channel channel = sshSession.openChannel("sftp");
channel.connect();
logger.info("host:" + host + ",port:" + port + "连接成功");
sftp = (ChannelSftp) channel;
} catch (Exception e) {
e.printStackTrace();
}
return sftp;
}

/**
* 释放连接,关闭会话
* @param sftp ChannelSftp
*/
public void disconnect(ChannelSftp sftp){
if(sftp != null){
sftp.disconnect();
try {
sftp.getSession().disconnect();
} catch (JSchException e) {
e.printStackTrace();
}
}
}

/**
* 上传文件
* @param directory 上传的目录
* @param uploadFile 要上传的文件
* @param sftp ChannelSftp
*/
public void upload(String directory, String uploadFile, ChannelSftp sftp) {
try {
if(directory != null && !"".equals(directory)){
sftp.cd(directory);
}
File file = new File(uploadFile);
FileInputStream fis = new FileInputStream(file);
sftp.put(fis, file.getName());
fis.close();
logger.info(uploadFile + "上传成功");
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 下载文件
* @param directory 下载目录
* @param downloadFile 下载的文件
* @param saveFile 存在本地的路径
* @param sftp
*/
public void download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) {
try {
if(directory != null && !"".equals(directory)){
sftp.cd(directory);
}
File file = new File(saveFile);
FileOutputStream fos = new FileOutputStream(file);
sftp.get(downloadFile, fos);
fos.close();
logger.info(downloadFile + "下载完成");
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 删除文件
* @param directory 要删除文件所在目录
* @param deleteFile 要删除的文件
* @param sftp
*/
public void delete(String directory, String deleteFile, ChannelSftp sftp) {
try {
if(directory != null && !"".equals(directory)){
sftp.cd(directory);
}
sftp.rm(deleteFile);
logger.info(deleteFile + "删除成功");
} catch (Exception e) {
e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: