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 }
原文地址:https://www.cnblogs.com/icerainsoft/p/2942661.html