*1.导入jsch-0.1.51.jar包
2.创建SFTP封装类:

   import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.Session;public class SFTP{private Session session;//会话 private Channel channel;//连接通道   private ChannelSftp sftp;// sftp操作类   public Session getSession() {return session;}public void setSession(Session session) {this.session = session;}public Channel getChannel() {return channel;}public void setChannel(Channel channel) {this.channel = channel;}public ChannelSftp getSftp() {return sftp;}public void setSftp(ChannelSftp sftp) {this.sftp = sftp;}}

3.创建工具操作类:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Vector;import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;public class SFTPUtil {private static Logger log = LogManager.getLogger(SFTPUtil.class);/*** 连接ftp/sftp服务器* @param SFTP类*/public static void getConnect(SFTP s) throws Exception {/** 密钥的密码  */
//      String privateKey ="key";
//        /** 密钥文件路径  */
//      String passphrase ="path";/** 主机 */ String host ="";    //服务器ip地址/** 端口 */ int port =22; /** 用户名 */ String username ="";   // 服务器用户名,密码/** 密码 */ String password ="";Session session = null;   Channel channel = null;   ChannelSftp sftp = null;// sftp操作类  JSch jsch = new JSch();   //设置密钥和密码  //支持密钥的方式登陆,只需在jsch.getSession之前设置一下密钥的相关信息就可以了
//      if (privateKey != null && !"".equals(privateKey)) {
//             if (passphrase != null && "".equals(passphrase)) {
//              //设置带口令的密钥
//                 jsch.addIdentity(privateKey, passphrase);
//             } else {
//              //设置不带口令的密钥
//                 jsch.addIdentity(privateKey);
//             }
//      }  session = jsch.getSession(username, host, port);   session.setPassword(password);   Properties config = new Properties();   config.put("StrictHostKeyChecking", "no"); // 不验证 HostKey    session.setConfig(config);   try {session.connect();   } catch (Exception e) {if (session.isConnected())   session.disconnect();   log.error("连接服务器失败,请检查主机[" + host + "],端口[" + port   + "],用户名[" + username + "],端口[" + port   + "]是否正确,以上信息正确的情况下请检查网络连接是否正常或者请求被防火墙拒绝.");   }channel = session.openChannel("sftp");   try {channel.connect();   } catch (Exception e) {   if (channel.isConnected())   channel.disconnect();   log.error("连接服务器失败,请检查主机[" + host + "],端口[" + port   + "],用户名[" + username + "],密码是否正确,以上信息正确的情况下请检查网络连接是否正常或者请求被防火墙拒绝.");   }sftp = (ChannelSftp) channel;  s.setChannel(channel);s.setSession(session);s.setSftp(sftp);}/*** 断开连接* */
public static void disConn(Session session,Channel channel,ChannelSftp sftp)throws Exception{if(null != sftp){sftp.disconnect();sftp.exit();sftp = null;}if(null != channel){channel.disconnect();channel = null;}if(null != session){session.disconnect();session = null;}
}/*** 进入目录* @param directory* @throws Exception*/
public static void cd(String directory)throws Exception { SFTP s=new SFTP();getConnect(s);//建立连接Session session = s.getSession();   Channel channel = s.getChannel();   ChannelSftp sftp = s.getSftp();// sftp操作类   try {sftp.cd(directory); //目录要一级一级进} catch (Exception e) {throw new Exception(e.getMessage(),e); } finally {disConn(session,channel,sftp);}
} /** * 列出目录下的文件 * @param directory  要列出的目录            * @return list 文件名列表 * @throws Exception */ public static List<String> listFiles(String directory) throws Exception { SFTP s=new SFTP();getConnect(s);//建立连接Session session = s.getSession();   Channel channel = s.getChannel();   ChannelSftp sftp = s.getSftp();// sftp操作类  Vector fileList=null; List<String> fileNameList = new ArrayList<String>(); fileList = sftp.ls(directory); //返回目录下所有文件名称disConn(session,channel,sftp);Iterator it = fileList.iterator(); while(it.hasNext()) { String fileName = ((LsEntry)it.next()).getFilename(); if(".".equals(fileName) || "..".equals(fileName)){ continue; } fileNameList.add(fileName); } return fileNameList; }

}

java fttp连接服务器操作相关推荐

  1. linux服务器python环境配置+pycharm连接服务器操作

    普天同庆!!!从原来啥也不懂一直拖着想着等返校后问同学怎么操作,到现在迫于无奈需要训练只能自己配置,耗时半天终于搞明白了!!!(大神永远不懂小白的痛) 目录 1.linux服务器环境配置 1.1 安装 ...

  2. idea中Java项目连接服务器进行debug查看

    1.服务器上开放一个端口,我这里是81 2.idea中点击上方Edit Configurations 然后点击左上角+ 点击Remote 这里的Host改成服务器地址 , Port为刚才在服务器开放的 ...

  3. 我的世界java无法连接服务器_java - 无法连接到Minecraft服务器 - SO中文参考 - www.soinside.com...

    当我尝试从此处使用Java从头开始制作的经过稍微修改的Minecraft客户端尝试连接到Minecraft服务器时,出现此错误:Minecraft原始客户端Java代码:Java sending ha ...

  4. python3远程连接_Python3 SSH远程连接服务器的方法示例

    下载paramiko 首先,我的windows系统上有python2和python3.使用下面命令切换到python3: activate py3 接着使用下面命令下载相关模块: pip instal ...

  5. Java hdfs连接池_Java使用连接池管理Hdfs连接

    记录一下Java API 连接hadoop操作hdfs的实现流程(使用连接池管理). 以前做过这方面的开发,本来以为不会有什么问题,但是做的还是坑坑巴巴,内心有些懊恼,记录下这烦人的过程,警示自己切莫 ...

  6. Python3 SSH远程连接服务器

    下载paramiko 首先,我的windows系统上有python2和python3.使用下面命令切换到python3: activate py3 接着使用下面命令下载相关模块: pip instal ...

  7. 【目标检测实验系列】AutoDL线上GPU服务器租用流程以及如何用Pycharm软件远程连接服务器进行模型训练 (以Pycharm远程训练Yolov5项目为例子 超详细)

    目录 1. 文章主要内容 2. 租用AutoDL服务器详细教程 2.1 注册AutoDL账号,并申请学生认证(学生认证有优惠,如果不是学生可以忽略此点) 2.2 算力市场选择GPU,并选择初始化配置环 ...

  8. JAVA怎么连接华为的HDFS系统_Java使用连接池管理Hdfs连接

    记录一下Java API 连接hadoop操作hdfs的实现流程(使用连接池管理). 以前做过这方面的开发,本来以为不会有什么问题,但是做的还是坑坑巴巴,内心有些懊恼,记录下这烦人的过程,警示自己切莫 ...

  9. [施工中]Java阿里云服务器ECS建站操作不完全指北

    [施工中]Java阿里云服务器ECS建站操作不完全指北 ECS建站操作记录 前言 一 .Xshell6与Xftp6 1.1Xshell与Xftp的作用 1.2如何从官网下载xshell与xftp 1. ...

  10. java ftp 文件移动文件_通过JAVA对FTP服务器连接,上传,下载,读取,移动文件等...

    记录一次对FTP服务器文件内容 通过Java程序对FTP服务器文件处理:连接,上传,下载,读取,移动文件等. 需求描述:今天接到一个任务,在Java项目中,读取FTP服务器上的一些文件,进行一些业务操 ...

最新文章

  1. ​炸了!程序员现在没有这点技能都还不能就业了?
  2. 如何用python画爱心型线_python怎么画爱心
  3. 爬虫python需要什么软件-python的爬虫流程是什么?这是编程小白必须要了解的
  4. 360无痕浏览器_浏览器如何开启老板键?
  5. Spark的stage划分算法源码分析
  6. 用计算机画有常数的函数图像,信息技术应用 用计算机画函数图象教学设计及教案分析...
  7. 从源码角度分析Android系统的异常捕获机制是如何运行的
  8. 【EISCI征稿中】上海 · 首届长三角人工智能产业发展论坛AINIT2020
  9. 简单易懂的 Raft 分布式共识算法讲义
  10. 如何添加评论_如何运用运镜+转场让视频更酷炫
  11. TTS之训练vocoder
  12. ubuntu18.04 ros 使用anaconda创建虚拟环境 python3.7安装 opencv-3.4.6,TensorFlow安装,notebook
  13. Android Service(二)Service的两种启动方式
  14. 自动化测试是测试人员的遮羞布?
  15. git工作流学习记录
  16. CSS特效八:开关按钮
  17. leetcode简单之603.连续空余座位
  18. 迷途Emlog模板全站好看的透明变色模板+源码
  19. 新起点,新希望,为梦想而战!!!
  20. 微信小程序实现替换logo功能

热门文章

  1. .net的commandname领悟
  2. 使用VC2005一些问题及解决方案(一)
  3. 关于神经网络的英语单词有,神经网络的英文单词
  4. 数据分析项目整理之用户消费行为分析
  5. Linux系统上QQ闪退的问题
  6. 计算机驱动打不开,驱动人生打不开怎么办
  7. 2015 2020 r4烧录卡 区别_【2015年和2020年上半年市场资金结构有何差异?】东北证券金融工程择时周报20200802...
  8. 基于Python实现的遗传算法求TSP问题
  9. kubernetes 核心组件的运行机制
  10. winserver2012安装mysql8.0.22需要安装vc++2015时报错0x80240017未指定错误