首页 > 编程知识 正文

sftp常用命令介绍,java通用代码生成器

时间:2023-05-06 09:58:20 阅读:108558 作者:3106

java sftp实现上传和下载。

com.jcraft

jsch

0.1.54

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.InputStream;

importjava.io.OutputStream;

importjava.util.Vector;

importorg.Apache.com mons.logging.log;

importorg.Apache.com mons.logging.log factory;

importcom.jcraft.jsch.Channel;

import com.j craft.jsch.channels FTP;

importcom.jcraft.jsch.JSch;

import com.j craft.jsch.jschexception;

importcom.jcraft.jsch.Session;

//*

*@date2018年3月20日下午10:26:54

*@docsftp工具类,实现【本地到服务器】文件【上传与下载】

*@依赖包com.jcraftjsch

*0.1.55

*/

publicclassSftpUtil{

privatestaticloglog=log factory.get log (sftp util.class;

privatestaticstringfile=' config/sftp.properties ';

privatestaticsessionsession=空;

privatestaticfinalinttimeout=10000; //10秒

privatestaticvoidinit (

//如果有加密,可以在这里解密

string user=properties utils.getproperty (file,' sftp.user ' );

string pass=properties utils.getproperty (file,' sftp.pass );

stringportstr=properties utils.getproperty (file,' sftp.port ' );

stringip=properties utils.getproperty (file,' sftp.ip ' );

integer port=空;

入口!=空! ' '.equals(Portstr ) ) }

port=integer.parseint(Portstr );

}

try{

JSchjsch=newJSch (;

if(port=0||port==null ) ) /连接到服务器,默认端口:采用默认22

session=jsch.getsession(user,ip );

}else{//使用指定端口连接到服务器

sssion=jsch.getsession(user,ip,port );

}

//如果服务器无法连接,则抛出异常

if(session==null ) {

log.info(sessionisnull );

返回;

}

//设定登录超时时间5秒

sssion.connect(timeout;

//设置登录主机的密码

sssion.setpassword(pass ); //设定密码

//设置第一次登录的提示(选项值: (ask|yes|no ) )。

session.set config (' stricthostkeychecking ',' no ' );

}catch(exceptione ) {

log.error (sftp util.init.exception1),e );

}

}

//*

*@paramsrc

*服务器中的文件名: a.jpg

*@paramdest

*目标文件名,带路径: E:/a.jpg

*@paramtempPath

*服务器路径

*/

pub

lic static void downloadFile(String src, String dest) {

if (session == null) {

init();

}

Channel channel = null;

try {

channel = (Channel) session.openChannel("sftp");

channel.connect(timeout);

ChannelSftp sftp = (ChannelSftp) channel;

// 进入服务器指定的文件夹

sftp.get(src, dest); // 下载

sftp.quit();

sftp.disconnect();

} catch (Exception e) {

log.error("SFTPUtil.uploadFile.exception1", e);

} finally {

if (channel != null) {

channel.disconnect();

}

}

}

public static void downloadFile(String src, OutputStream output) {

if (session == null) {

init();

}

Channel channel = null;

try {

channel = (Channel) session.openChannel("sftp");

channel.connect(timeout);

ChannelSftp sftp = (ChannelSftp) channel;

// 进入服务器指定的文件夹

sftp.get(src, output);// 下载

sftp.quit();

sftp.disconnect();

} catch (Exception e) {

log.error("SFTPUtil.uploadFile.exception1", e);

} finally {

if (channel != null) {

channel.disconnect();

}

}

}

/**

* @param is

*            文件输入流

* @param dest

*            文件名称 a.jpg

* @param tempPath

*            路径

*/

public static void uploadFile(InputStream is, String dest) {

if (session == null) {

init();

}

Channel channel = null;

try {

channel = (Channel) session.openChannel("sftp");

channel.connect(timeout);

ChannelSftp sftp = (ChannelSftp) channel;

sftp.put(is, dest); // 上传

sftp.quit();

sftp.disconnect();

} catch (Exception e) {

log.error("SFTPUtil.uploadFile.exception1", e);

} finally {

if (channel != null) {

channel.disconnect();

}

}

}

/**

* 上传文件

*

* @param src

*            源文件地址 abc.jpg

* @param dest

*            目标地址 abc1.jpg

* @param tempPath

*            中间层目录 /usr/local/nginx/html/ abc.jpg

* @throws JSchException

*/

public static void uploadFile(String src, String dest) {

if (session == null) {

init();

}

Channel channel = null;

try {

channel = (Channel) session.openChannel("sftp");

channel.connect(timeout);

ChannelSftp sftp = (ChannelSftp) channel;

sftp.put(src, dest);

sftp.quit();

sftp.disconnect();

} catch (Exception e) {

log.error("SFTPUtil.uploadFile.exception1", e);

} finally {

if (channel != null) {

channel.disconnect();

}

}

}

/**

* 模版 : 使用输入输出流

*

* 利用JSch包实现SFTP下载、上传文件

*

* @param ip

*            主机IP

* @param user

*            主机登陆用户名

* @param psw

*            主机登陆密码

* @param port

*            主机ssh2登陆端口,如果取默认值,传-1

*/

@SuppressWarnings("unused")

private static void sshSftp(String ip, String user, String pass, int port) throws Exception {

Session session = null;

Channel channel = null;

JSch jsch = new JSch();

if (port <= 0) {

// 连接服务器,采用默认端口:默认22

session = jsch.getSession(user, ip);

} else {

// 采用指定的端口连接服务器

session = jsch.getSession(user, ip, port);

}

// 如果服务器连接不上,则抛出异常

if (session == null) {

throw new Exception("session is null");

}

// 设置登陆主机的密码

session.setPassword(pass);// 设置密码

// 设置第一次登陆的时候提示,可选值:(ask | yes | no)

session.setConfig("StrictHostKeyChecking", "no");

// 设置登陆超时时间

session.connect(timeout);

try {

// 创建sftp通信通道

channel = (Channel) session.openChannel("sftp");

channel.connect(1000);

ChannelSftp sftp = (ChannelSftp) channel;

// 进入服务器指定的文件夹

sftp.cd("/usr/local/nginx/html");

// 列出服务器指定的文件列表

Vector> v = sftp.ls("*");// "*.txt"

for (int i = 0; i 

System.out.println(v.get(i));

}

// 以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换以下流就可以了

OutputStream outstream = sftp.put("1117.jpg");

InputStream instream = new FileInputStream(new File("E:/IMG/7.jpg"));

byte b[] = new byte[1024];

int n;

while ((n = instream.read(b)) != -1) {

outstream.write(b, 0, n);

}

outstream.flush();

outstream.close();

instream.close();

} catch (Exception e) {

e.printStackTrace();

} finally {

session.disconnect();

channel.disconnect();

}

}

public static void main(String[] args) {

// String src = "E:/kare20.png" ;

// String dest = "kare.png";

// uploadFile(src, dest);

String src = "D:/潇洒的茉莉.jpg";

String dest = "/usr/local/images/advert/999.jpg";

uploadFile(src, dest);

}

}#SFTP相关配置

# 主机IP

sftp.ip=192.168.8.111

# 用户

sftp.user=dev

# 密码

sftp.pass=dev123

# 端口;默认22

sftp.port=22

# 默认路径

sftp.path=/usr/local/nginx/html

标签:

java

sftp

出处:https://www.meihaocloud.com.com/b_185.html , 欢迎转载,请在文章页标出原文连接 !

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。