Sftp java类的应用(包括密钥连接)
使用:jsch-0.1.5.jar
/**
*
*/
package com.zgs.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
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;
/**
*
* @author Administrator
* 2015-4-10
*
*/
public class SFtp {
private String userName;
private String password;
private int port;
private String hostName;
private String priKeyFile;
private String passphrase;
Session session=null;
Channel channel=null;
/**
* @param userName
* @param password
* @param port
* @param hostName
*/
public SFtp(String userName, String password, int port, String hostName) {
super();
this.userName = userName;
this.password = password;
this.port = port;
this.hostName = hostName;
}
/**
* @param userName
* @param password
* @param port
* @param hostName
* @param priKeyFile
* @param passphrase
*/
public SFtp(String userName, String password, int port, String hostName,
String priKeyFile, String passphrase) {
super();
this.userName = userName;
this.password = password;
this.port = port;
this.hostName = hostName;
this.priKeyFile = priKeyFile;
this.passphrase = passphrase;
}
public ChannelSftp connect(){
JSch jsch=new JSch();
try {
if(port>0){
session=jsch.getSession(userName, hostName, port);
}else{
session=jsch.getSession(userName, hostName);
}
if (session == null) {
return null;
//throw new Exception("session is null");
}
//设置登陆主机的密码
session.setPassword(password);//设置密码
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
session.setConfig(sshConfig);
session.setTimeout(20000);
session.connect();
//创建sftp通信通道
channel = (Channel) session.openChannel("sftp");
channel.connect();
return (ChannelSftp) channel;
} catch (JSchException e) {
// TODO Auto-generated catch block
return null;
}
}
/**
* 密钥文件连接
* @return
*/
public ChannelSftp priKeyConnect(){
JSch jsch=new JSch();
try {
if(priKeyFile !=null && !"".equals(priKeyFile)){
if(passphrase !=null && !"".equals(passphrase)){
jsch.addIdentity(priKeyFile, passphrase);
}else{
jsch.addIdentity(priKeyFile);
}
}
if(port >0){
session=jsch.getSession(userName, hostName, port);
}else{
session=jsch.getSession(userName, hostName);
}
Properties config=new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
//session.setTimeout(20000);
session.connect();
channel=session.openChannel("sftp");
channel.connect();
return (ChannelSftp)channel;
} catch (JSchException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
*
* @param is 要上传的本地文件流
* @param dsc 目标目录或文件,若是目录则上传的目标文件名和本地文件名一样
* @param sftp
* @return
*/
public boolean upload(InputStream is,String dsc,ChannelSftp sftp){
try {
sftp.put(is, dsc);
return true;
} catch (SftpException e) {
// TODO Auto-generated catch block
return false;
}
}
/**
*
* @param remotedir 要上传到的目录
* @param uploadFile 上传的文件
* @param sftp
* @return
*/
public boolean upload(String remotedir, String uploadFile, ChannelSftp sftp){
try {
sftp.cd(remotedir);
File file=new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
return false;
}
}
/**
* 下载文件
*
* @param directory
* 下载目录
* @param downloadFile
* 下载的文件
* @param saveFile
* 存在本地的路径
* @param sftp
*/
public void download(String directory, String downloadFile,
String saveFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
sftp.get(downloadFile,saveFile);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除文件
*
* @param directory
* 要删除文件所在目录
* @param deleteFile
* 要删除的文件
* @param sftp
*/
public void delete(String directory, String deleteFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
sftp.rm(deleteFile);
} catch (Exception e) {
e.printStackTrace();
}
}
public void disconnected(ChannelSftp sftp){
if (sftp != null) {
try {
sftp.getSession().disconnect();
} catch (JSchException e) {
e.printStackTrace();
}
sftp.disconnect();
}
}
}
分享到:
相关推荐
java 实现 sftp 文件上传下载 等操作。
FTP和SFTP工具类,基于java语言 其中FTP修改默认模式为被动模式 文档还包括了需要引用的maven依赖内容
版权声明:本工具类为个人兴趣基于chnSftp编写的应用,个人版权在先,后因各个办公环境无相关软件也有相关的个人使用,和办公环境内的推广使用,也欢迎互联网使用,如涉及相关环境认为本应用有不妥之处,请删除本人...
sftp java工具类
SFTP 方式 文件上传、文件下载 文件列表。。。。。。。。。
主要介绍了详解Java使用Jsch与sftp服务器实现ssh免密登录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
sftp上传下载,里面包含jar包,方法,直接可以调用
用java写的SFTP代码,用java实现的Tftp(Sftp)客户端与服务器程序。在这个程序中用到了一个“状态”的机制:客户端与服务器端在开始运行时有相同的状态,通过用户的输入或程序内部运行的机制,程序可以转到不同的状态...
适用多线程的SFTP类,支持代理服务器,是spring服务类,无需修改可直接与spring结合使用。 代码经过大量的并发使用验证,稳定可靠。 依赖的jar包如下: <groupId>com.jcraft</groupId> <artifactId>...
连接sftp服务器、方法以写好、只需要传入几个参数即可调用、附加下载文件、亲测有效
本篇文章主要介绍了JAVA SFTP文件上传、下载及批量下载实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
ftp支持主动和被动模式上传下载,sftp支持上传功能
java SFTP上传工具类
java使用swing编写sfp文件与文件夹上传功能,后续给大家升级同时多个目标地址上传
java 开发sftp下载上传
Java 操作SFTP上传文件下载案例,很值得看的,Java 操作SFTP上传文件下载案例,很值得看的。
JSch - Java实现的SFTP(文件上传详解篇)
用java实现的Tftp(Sftp)客户端与服务器程序。 在这个程序中用到了一个“状态”的机制:客户端与服务器端在开始运行时有相同的状态,通过用户的输入或程序内部运行的机制,程序可以转到不同的状态,在不同的状态下...
Delphi通过SFTP连接Linux服务器,有利于做数据的对接
工作中遇到客户提出的sftp上传,把核心代码给大家