100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java sftp工具类_Java代码--SFTP工具类

java sftp工具类_Java代码--SFTP工具类

时间:2020-05-25 10:31:39

相关推荐

java sftp工具类_Java代码--SFTP工具类

java sftp实现上传和下载。

com.jcraft

jsch

0.1.54

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.InputStream;

importjava.io.OutputStream;

importjava.util.Vector;

mons.logging.Log;

mons.logging.LogFactory;

importcom.jcraft.jsch.Channel;

importcom.jcraft.jsch.ChannelSftp;

importcom.jcraft.jsch.JSch;

importcom.jcraft.jsch.JSchException;

importcom.jcraft.jsch.Session;

/**

*@date3月20日下午10:26:54

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

*@依赖包com.jcraftjsch

*0.1.55

*/

publicclassSftpUtil{

privatestaticLoglog=LogFactory.getLog(SftpUtil.class);

privatestaticStringFILE="config/sftp.properties";

privatestaticSessionsession=null;

privatestaticfinalinttimeout=10000;//10秒

privatestaticvoidinit(){

//如果有加密,可在此处解密

Stringuser=PropertiesUtils.getProperty(FILE,"sftp.user");

Stringpass=PropertiesUtils.getProperty(FILE,"sftp.pass");

StringportStr=PropertiesUtils.getProperty(FILE,"sftp.port");

Stringip=PropertiesUtils.getProperty(FILE,"sftp.ip");

Integerport=null;

if(portStr!=null&&!"".equals(portStr)){

port=Integer.parseInt(portStr);

}

try{

JSchjsch=newJSch();

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

session=jsch.getSession(user,ip);

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

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

}

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

if(session==null){

log.info("sessionisnull");

return;

}

//设置登陆超时时间5秒

session.connect(timeout);

//设置登陆主机的密码

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

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

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

}catch(Exceptione){

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

}

}

/**

*@paramsrc

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

*@paramdest

*目的地的文件名称,带路径:E:/a.jpg

*@paramtempPath

*服务器路径

*/

publicstaticvoiddownloadFile(Stringsrc,Stringdest){

if(session==null){

init();

}

Channelchannel=null;

try{

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

channel.connect(timeout);

ChannelSftpsftp=(ChannelSftp)channel;

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

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

sftp.quit();

sftp.disconnect();

}catch(Exceptione){

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

}finally{

if(channel!=null){

channel.disconnect();

}

}

}

publicstaticvoiddownloadFile(Stringsrc,OutputStreamoutput){

if(session==null){

init();

}

Channelchannel=null;

try{

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

channel.connect(timeout);

ChannelSftpsftp=(ChannelSftp)channel;

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

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

sftp.quit();

sftp.disconnect();

}catch(Exceptione){

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

}finally{

if(channel!=null){

channel.disconnect();

}

}

}

/**

*@paramis

*文件输入流

*@paramdest

*文件名称a.jpg

*@paramtempPath

*路径

*/

publicstaticvoiduploadFile(InputStreamis,Stringdest){

if(session==null){

init();

}

Channelchannel=null;

try{

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

channel.connect(timeout);

ChannelSftpsftp=(ChannelSftp)channel;

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

sftp.quit();

sftp.disconnect();

}catch(Exceptione){

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

}finally{

if(channel!=null){

channel.disconnect();

}

}

}

/**

*上传文件

*

*@paramsrc

*源文件地址abc.jpg

*@paramdest

*目标地址abc1.jpg

*@paramtempPath

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

*@throwsJSchException

*/

publicstaticvoiduploadFile(Stringsrc,Stringdest){

if(session==null){

init();

}

Channelchannel=null;

try{

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

channel.connect(timeout);

ChannelSftpsftp=(ChannelSftp)channel;

sftp.put(src,dest);

sftp.quit();

sftp.disconnect();

}catch(Exceptione){

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

}finally{

if(channel!=null){

channel.disconnect();

}

}

}

/**

*模版:使用输入输出流

*

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

*

*@paramip

*主机IP

*@paramuser

*主机登陆用户名

*@parampsw

*主机登陆密码

*@paramport

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

*/

@SuppressWarnings("unused")

privatestaticvoidsshSftp(Stringip,Stringuser,Stringpass,intport)throwsException{

Sessionsession=null;

Channelchannel=null;

JSchjsch=newJSch();

if(port<=0){

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

session=jsch.getSession(user,ip);

}else{

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

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

}

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

if(session==null){

thrownewException("sessionisnull");

}

//设置登陆主机的密码

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

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

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

//设置登陆超时时间

session.connect(timeout);

try{

//创建sftp通信通道

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

channel.connect(1000);

ChannelSftpsftp=(ChannelSftp)channel;

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

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

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

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

for(inti=0;i

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

}

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

OutputStreamoutstream=sftp.put("1117.jpg");

InputStreaminstream=newFileInputStream(newFile("E:/IMG/7.jpg"));

byteb[]=newbyte[1024];

intn;

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

outstream.write(b,0,n);

}

outstream.flush();

outstream.close();

instream.close();

}catch(Exceptione){

e.printStackTrace();

}finally{

session.disconnect();

channel.disconnect();

}

}

publicstaticvoidmain(String[]args){

//Stringsrc="E:/kare20.png";

//Stringdest="kare.png";

//uploadFile(src,dest);

Stringsrc="D:/张三.jpg";

Stringdest="/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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。