zoukankan      html  css  js  c++  java
  • java使用JSCH连接FTP(Linux服务器)上传文件到Linux服务器

    首先需要用到jsch-0.1.54.jar 包;

    链接: https://pan.baidu.com/s/1kZR6MqwpCYht9Pp_D6NKQw 密码: gywx

    直接上代码:

      1 package test;
      2 
      3 import java.io.File;
      4 import java.io.FileInputStream;
      5 import java.util.ArrayList;
      6 import java.util.List;
      7 import java.util.Properties;
      8 import java.util.Vector;
      9 
     10 import org.slf4j.Logger;
     11 import org.slf4j.LoggerFactory;
     12 
     13 import com.jcraft.jsch.Channel;
     14 import com.jcraft.jsch.ChannelSftp;
     15 import com.jcraft.jsch.ChannelSftp.LsEntry;
     16 import com.jcraft.jsch.JSch;
     17 import com.jcraft.jsch.JSchException;
     18 import com.jcraft.jsch.Session;
     19 import com.jcraft.jsch.SftpException;
     20 import com.opensymphony.xwork2.util.finder.ClassFinder.Info;
     21 
     22 public class FTPUtil {
     23     private static final Logger LOG = LoggerFactory.getLogger(FTPUtil.class);
     24 
     25     /**
     26      * 参考实例
     27      * 
     28      * @param args
     29      */
     30     // public static void main(String[] args) {
     31     // File file = new File("D://36.txt");
     32     // FTPUtil ft = new FTPUtil();
     33     // Session s = ft.getSession(SFTPInfo.SFTP_REQ_HOST,
     34     // SFTPInfo.SFTP_DEFAULT_PORT, SFTPInfo.SFTP_REQ_USERNAME,
     35     // SFTPInfo.SFTP_REQ_PASSWORD);
     36     // Channel channel = ft.getChannel(s);
     37     // ChannelSftp sftp = (ChannelSftp)channel;
     38     // String upload = ft.uploadFile(sftp,"hot_Imgs",file);
     39     // System.out.println(upload);
     40     // ft.closeAll(sftp, channel, s); //关闭连接
     41     // }
     42     public Channel getChannel(Session session) {
     43         Channel channel = null;
     44         try {
     45             channel = session.openChannel("sftp");
     46             channel.connect();
     47             LOG.info("get Channel success!");
     48         } catch (JSchException e) {
     49             LOG.info("get Channel fail!", e);
     50         }
     51         return channel;
     52     }
     53 
     54     public Session getSession(String host, int port, String username,
     55             final String password) {
     56         Session session = null;
     57         try {
     58             JSch jsch = new JSch();
     59             jsch.getSession(username, host, port);
     60             session = jsch.getSession(username, host, port);
     61             session.setPassword(password);
     62             Properties sshConfig = new Properties();
     63             sshConfig.put("StrictHostKeyChecking", "no");
     64             session.setConfig(sshConfig);
     65             session.connect();
     66             LOG.info("Session connected!");
     67         } catch (JSchException e) {
     68             LOG.info("get Channel failed!", e);
     69         }
     70         return session;
     71     }
     72 
     73     /**
     74      * 创建文件夹
     75      * 
     76      * @param sftp
     77      * @param dir
     78      *            文件夹名称
     79      */
     80     public void mkdir(ChannelSftp sftp, String dir) {
     81         try {
     82             sftp.mkdir(dir);
     83             System.out.println("创建文件夹成功!");
     84         } catch (SftpException e) {
     85             System.out.println("创建文件夹失败!");
     86             e.printStackTrace();
     87         }
     88     }
     89 
     90     /**
     91      * @param sftp
     92      * @param dir
     93      *            上传目录
     94      * @param file
     95      *            上传文件
     96      * @return
     97      */
     98     public String uploadFile(ChannelSftp sftp, String dir, File file) {
     99         String result = "";
    100         try {
    101             sftp.cd(dir);
    102             // File file = new File("D://34.txt"); //要上传的本地文件
    103             if (file != null) {
    104                 sftp.put(new FileInputStream(file), file.getName());
    105                 result = "上传成功!";
    106             } else {
    107                 result = "文件为空!不能上传!";
    108             }
    109         } catch (Exception e) {
    110             LOG.info("上传失败!", e);
    111             result = "上传失败!";
    112         }
    113         return result;
    114     }
    115 
    116     /**
    117      * 下载文件
    118      * 
    119      * @param directory
    120      *            下载目录
    121      * @param downloadFile
    122      *            下载的文件
    123      * @param saveFile
    124      *            存在本地的路径
    125      * @param sftp
    126      */
    127     public String download(String directory, String downloadFile,
    128             String saveFile, ChannelSftp sftp) {
    129         String result = "";
    130         try {
    131             sftp.cd(directory);
    132             sftp.get(downloadFile, saveFile);
    133             result = "下载成功!";
    134         } catch (Exception e) {
    135             result = "下载失败!";
    136             LOG.info("下载失败!", e);
    137             ;
    138         }
    139         return result;
    140     }
    141 
    142     /**
    143      * 删除文件
    144      * 
    145      * @param directory
    146      *            要删除文件所在目录
    147      * @param deleteFile
    148      *            要删除的文件
    149      * @param sftp
    150      */
    151     public String delete(String directory, String deleteFile, ChannelSftp sftp) {
    152         String result = "";
    153         try {
    154             sftp.cd(directory);
    155             sftp.rm(deleteFile);
    156             result = "删除成功!";
    157         } catch (Exception e) {
    158             result = "删除失败!";
    159             LOG.info("删除失败!", e);
    160         }
    161         return result;
    162     }
    163 
    164     private void closeChannel(Channel channel) {
    165         if (channel != null) {
    166             if (channel.isConnected()) {
    167                 channel.disconnect();
    168             }
    169         }
    170     }
    171 
    172     private void closeSession(Session session) {
    173         if (session != null) {
    174             if (session.isConnected()) {
    175                 session.disconnect();
    176             }
    177         }
    178     }
    179 
    180     public void closeAll(ChannelSftp sftp, Channel channel, Session session) {
    181         try {
    182             closeChannel(sftp);
    183             closeChannel(channel);
    184             closeSession(session);
    185         } catch (Exception e) {
    186             LOG.info("closeAll", e);
    187         }
    188     }
    189 }
    1 package test;
    2 
    3 public class SFTPInfo {  
    4     public static final String SFTP_REQ_HOST = "10.10.2.20";      //ip
    5     public static final String SFTP_REQ_USERNAME = "gaowei";      //username
    6     public static final String SFTP_REQ_PASSWORD = "gaowei";      //password
    7     public static final int SFTP_DEFAULT_PORT = 22;      //端口
    8 }  
  • 相关阅读:
    DAY 206 Python验证常见的50个正则表达式
    DAY 205 python使用ftplib模块实现FTP文件的上传下载
    Jmeter组件介绍
    Jmeter安装
    Jmeter学习笔记
    Jmeter:相应断言介绍
    python time模块
    python+selenium+Eclipse安装
    Python os.path模板函数
    ping 计算机全名,返回的不是IP地址
  • 原文地址:https://www.cnblogs.com/lfyu/p/8532781.html
Copyright © 2011-2022 走看看