• SFTP 例子


      1 package com.imix.sftp;
      2 
      3 import java.io.File;
      4 import java.io.FileInputStream;
      5 import java.io.FileNotFoundException;
      6 import java.io.FileOutputStream;
      7 import java.util.Properties;
      8 import java.util.Vector;
      9 
     10 import com.jcraft.jsch.Channel;
     11 import com.jcraft.jsch.ChannelSftp;
     12 import com.jcraft.jsch.JSch;
     13 import com.jcraft.jsch.JSchException;
     14 import com.jcraft.jsch.Session;
     15 import com.jcraft.jsch.SftpException;
     16 
     17 
     18 /**
     19  * @ClassName: SFTP
     20  * @Author: Ares
     21  * @Description: TODO(sftp demo)
     22  * @Date: 2013-3-1 下午12:25:24
     23  */
     24 public class SFTP {
     25 
     26     /**
     27      * @param args
     28      */
     29     public static void main(String[] args) {
     30         
     31         SFTP ftp = new SFTP();
     32         String host="200.31.154.19";
     33         int port = 22;
     34         String username="root";
     35         String password="123456";
     36         String directory="/home/imix/";
     37         String uploadFile = "D:/ipconfig.txt";
     38         String downloadFile = "ipconfig.txt";
     39         String saveFile = "D:/ipconfig.txt";
     40         String deleteFile = "ipconfig.txt";
     41         
     42         ChannelSftp sftp = ftp.connect(host, port, username, password);
     43         ftp.upload(directory, uploadFile, sftp);
     44         ftp.download(directory, downloadFile, saveFile, sftp);
     45         ftp.delete(directory, deleteFile, sftp);
     46         try {
     47             sftp.cd(directory);
     48             sftp.mkdir("createFolder");
     49         } catch (SftpException e) {
     50             e.printStackTrace();
     51         }finally{
     52             try {
     53             //如果没有sesstion的disconnect,程序不会退出
     54                 sftp.getSession().disconnect();
     55             } catch (JSchException e) {
     56                 e.printStackTrace();
     57             }
     58             sftp.disconnect();
     59             sftp.exit();
     60         }
     61     }
     62 
     63     /**
     64      * @AddBy: Ares
     65      * @Description: TODO(connect the host)
     66      * @param host
     67      * @param port
     68      * @param username
     69      * @param password
     70      * @return
     71      */
     72     public ChannelSftp connect(String host, int port, String username, String password) {
     73         ChannelSftp csftp = null;
     74         JSch jsch = new JSch();
     75         try {
     76             Session sshSession = jsch.getSession(username, host, port);
     77             System.out.println("jsch session created, user="+username);
     78             
     79             sshSession.setPassword(password);
     80             Properties sshConfig = new Properties();
     81             sshConfig.put("StrictHostKeyChecking", "no");
     82             sshSession.setConfig(sshConfig);
     83             sshSession.connect();
     84             System.out.println("session is connected.");
     85             
     86             Channel channel = sshSession.openChannel("sftp");
     87             channel.connect();
     88             
     89             csftp = (ChannelSftp)channel;
     90             System.out.println("connected to host:"+ host);
     91             
     92         } catch (JSchException e) {
     93             e.printStackTrace();
     94         }
     95         return csftp;
     96     }
     97     
     98     /**
     99      * @AddBy: Ares
    100      * @Description: TODO(upload file to host)
    101      * @param directory
    102      * @param uploadFile
    103      * @param sftp
    104      * @return
    105      */
    106     public boolean upload(String directory, String uploadFile, ChannelSftp sftp){
    107         File file = new File(uploadFile);
    108         try {
    109             sftp.cd(directory);
    110             sftp.put(new FileInputStream(file), file.getName());
    111             System.out.println("upload file success, file:"+uploadFile);
    112         } catch (Exception e) {
    113             System.err.println("upload file failed, file:"+uploadFile);
    114             e.printStackTrace();
    115             return false;
    116         }
    117         return true;
    118     }
    119     /**
    120      * @AddBy: Ares
    121      * @Description: TODO(download file from host)
    122      * @param directory
    123      * @param downloadFile
    124      * @param saveFile
    125      * @param sftp
    126      * @return
    127      */
    128     public boolean download(String directory, String downloadFile, String saveFile, ChannelSftp sftp){
    129         File file = new File(saveFile);
    130         try {
    131             sftp.cd(directory);
    132             sftp.get(downloadFile, new FileOutputStream(file));
    133             System.out.println("download file success, file:"+downloadFile);
    134         } catch (FileNotFoundException e) {
    135             e.printStackTrace();
    136             return false;
    137         } catch (SftpException e) {
    138             System.err.println("download file failed, file:"+downloadFile);
    139             e.printStackTrace();
    140             return false;
    141         }
    142         return true;
    143     }
    144     
    145     /**
    146      * @AddBy: Ares
    147      * @Description: TODO(delete file of host)
    148      * @param directory
    149      * @param deleteFile
    150      * @param sftp
    151      * @return
    152      */
    153     public boolean delete(String directory, String deleteFile, ChannelSftp sftp){
    154         try {
    155             sftp.cd(directory);
    156             sftp.rm(deleteFile);
    157             System.out.println("delete file success, file:"+deleteFile);
    158         } catch (SftpException e) {
    159             System.err.println("delete file failed, file:"+deleteFile);
    160             e.printStackTrace();
    161             return false;
    162         }
    163         return true;
    164     }
    165     
    166     /**
    167      * @AddBy: Ares
    168      * @Description: TODO(get file list from directory of host)
    169      * @param directory
    170      * @param sftp
    171      * @return
    172      */
    173     public Vector<?> listFiles(String directory, ChannelSftp sftp){
    174         try {
    175             return sftp.ls(directory);
    176         } catch (SftpException e) {
    177             System.err.println("list directory failed, directory:"+directory);
    178             e.printStackTrace();
    179         }
    180         return null;
    181     }
    182     
    183 }
  • 相关阅读:
    前端网站汇总
    更换Sublime Text主题字体
    免费收录网站搜索引擎登录口
    IE6,7,8支持css圆角
    CSS继承—深入剖析
    JavaScript正则表达式大全
    CSS伪元素选择器
    line-height用法总结
    判断腾讯QQ是否在线
    text-overflow使用文字超多div的宽度或超过在table中<td>
  • 原文地址:https://www.cnblogs.com/icerainsoft/p/2942661.html
Copyright © 2020-2023  润新知