JSch教程使⽤sftp协议实现服务器⽂件载操作
⽬录
Jsch是什么?
怎么使⽤?
添加jar依赖
Jsch是什么?
JSch 是SSH2的⼀个纯Java实现。它允许你连接到⼀个sshd 服务器,使⽤端⼝转发,X11转发,⽂件传输等等。你可以将它的功能集成到你⾃⼰的程序中。同时该项⽬也提供⼀个J2ME版本⽤来在⼿机上直连SSHD服务器
Jsch功能很强⼤,博主这⾥主要⽤来做⽂件操作
怎么使⽤?
添加jar依赖
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
</dependency>
我把我的SftpUtil贴下⾯了,注释还算清楚
/**
* Content :sftp协议⽂件上传下载
* Created by kl on 2016/5/6.
*/
public class SftpUtil {
/
**
* 上传⽂件到指定服务器
* @param ip 连接ip
* @param user ⽤户名
* @param psw 密码
* @param port 端⼝ <=0 为默认端⼝
* @param fielPath 上传的服务器路径
* @param serverFileName 服务器保存的⽂件名
* @param instream 要上传的⽂件流
* @throws Exception
*/
public static void sftpFileUpload(String ip,int port, String user, String psw, String fielPath,String serverFileName,InputStream instream) throws Exception {
Session session =getSession( ip,  user,  psw,  port);
Channel channel = null;
try {
//创建sftp通信通道
channel = (Channel) session.openChannel("sftp");
ChannelSftp sftp = (ChannelSftp) channel;
connect下载//进⼊服务器指定的⽂件夹
sftp.cd(fielPath);
OutputStream outstream = sftp.put(serverFileName);
byte b[] = new byte[1024*200];//每次传输200k
int n;
while ((n = ad(b)) != -1) {
outstream.write(b, 0, n);
}
outstream.flush();
outstream.close();
instream.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.disconnect();
if (channel!=null)channel.disconnect();
}
}
/**
* 从指定服务器下载⽂件到本地
* @param ip 连接ip
* @param user ⽤户名
* @param psw 密码
* @param port 端⼝ <=0 为默认端⼝
* @param fielPath 服务器⽂件路径
* @param serverFileName 要下载的⽂件名
* @param outputStream 输出到本地的⽂件流
* @throws Exception
*/
public static void sftpFileDownload(String ip,int port, String user, String psw, String fielPath,String serverFileName,OutputStream outputStream) throws Exception {        Session session =getSession( ip,  user,  psw,  port);
Channel channel = null;
try {
//创建sftp通信通道
channel = (Channel) session.openChannel("sftp");
ChannelSftp sftp = (ChannelSftp) channel;
//进⼊服务器指定的⽂件夹
sftp.cd(fielPath);
<(serverFileName,outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
session.disconnect();
if (channel!=null)channel.disconnect();
}
}
/
**
* 删除服务器指定⽂件
* @param ip 连接ip
* @param user ⽤户名
* @param psw 密码
* @param port 端⼝ <=0 为默认端⼝
* @param fielPath 服务器⽂件路径
* @param serverFileName 要删除的⽂件名
* @throws Exception
*/
public static void sftpFileDelete(String ip,int port, String user, String psw, String fielPath,String serverFileName) throws Exception {
Session session =getSession( ip,  user,  psw,  port);
Channel channel = null;
try {
//创建sftp通信通道
channel = (Channel) session.openChannel("sftp");
ChannelSftp sftp = (ChannelSftp) channel;
//进⼊服务器指定的⽂件夹
sftp.cd(fielPath);
<(serverFileName);
} catch (Exception e) {
e.printStackTrace();
} finally {
session.disconnect();
if (channel!=null)channel.disconnect();
}
}
/**
* 查看指定⽬录所有⽂件
* @param ip
* @param user
* @param psw
* @param port
* @param fielPath
* @throws Exception
*/
public static Vector  seeServerFileList(String ip, int port,String user, String psw,  String fielPath)throws Exception{
Session session =getSession( ip,  user,  psw,  port);
Channel channel = null;
Vector v=null;
try {
//创建sftp通信通道
channel = (Channel) session.openChannel("sftp");
ChannelSftp sftp = (ChannelSftp) channel;
//进⼊服务器指定的⽂件夹
sftp.cd(fielPath);
//列出服务器指定的⽂件列表
v = sftp.ls(fielPath);
} catch (Exception e) {
e.printStackTrace();
} finally {
session.disconnect();
if (channel!=null)channel.disconnect();
}
return  v;
}
/**
* 连接服务器
* @param ip 服务器地址
* @param user ⽤户名
* @param psw  密码
* @param port  连接端⼝
* @return
* @throws Exception
*/
public static Session getSession(String ip, String user, String psw, int port)throws Exception{
Session session = null;
JSch jsch = new JSch();
if (port <= 0) {
//连接服务器,采⽤默认端⼝
session = Session(user, ip);
} else {
session = Session(user, ip, port);
}
//如果服务器连接不上,则抛出异常
if (session == null) {
throw new Exception("sftp session is null");
}
session.setPassword(psw);//设置密码
//设置登陆超时时间
return  session;
}
}
以上就是JSch教程使⽤sftp协议实现服务器⽂件上传下载操作的详细内容,更多关于JSch sftp协议服务器⽂件上传下载的资料请关注其它相关⽂章!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。