首页 > 学院 > 开发设计 > 正文

SFTP client 实例

2019-11-08 02:44:16
字体:
来源:转载
供稿:网友

依赖jar包:jsch-0.1.43.jar

下载地址http://www.jcraft.com/jsch/

[java] view plain copypackage com.sftp;    /*  * Created on 2009-9-14  * Copyright 2009 by www.xfok.net. All Rights Reserved  *  */    import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.util.PRoperties;  import java.util.Vector;    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;  import com.jcraft.jsch.SftpException;    /**  * @author YangHua  *   */  public class SFTPUtils {    //  private static final String host = "192.168.1.168";  //  private static final  int port = 22;  //  private static final  String username = "tmux";  //  private static final  String passWord = "tmux";  //  private static final  String directory = "/data/backup/168";  //    //  private static final  String downloadFile = "xxx.txt";  //  private static final  String uploadFile = "d:/cc.jpg";  //  private static final  String saveFile = "e:/cc.jpg";  //  private static final  String deleteFile = "cc.jpg";        /**      * 连接sftp服务器      * @param host 主机      * @param port 端口      * @param username 用户名      * @param password 密码      * @return      */      public ChannelSftp connect(String host, int port, String username,              String password) {          ChannelSftp sftp = null;          try {              JSch jsch = new JSch();              jsch.getSession(username, host, port);              Session sshSession = jsch.getSession(username, host, port);              System.out.println("Session created.");              sshSession.setPassword(password);              Properties sshConfig = new Properties();              sshConfig.put("StrictHostKeyChecking", "no");              sshSession.setConfig(sshConfig);              sshSession.connect();              System.out.println("Session connected.");              System.out.println("Opening Channel.");              Channel channel = sshSession.openChannel("sftp");              channel.connect();              sftp = (ChannelSftp) channel;              System.out.println("Connected to " + host + ".");          } catch (Exception e) {              e.printStackTrace() ;          }          return sftp;      }        /**      * 上传文件      * @param directory 上传的目录      * @param uploadFile 要上传的文件      * @param sftp      */      public void upload(String directory, String uploadFile, ChannelSftp sftp) {          try {              sftp.cd(directory);              File file=new File(uploadFile);              sftp.put(new FileInputStream(file), file.getName());          } catch (Exception e) {              e.printStackTrace();          }      }        /**      * 下载文件      * @param directory 下载目录      * @param downloadFile 下载的文件      * @param saveFile 存在本地的路径      * @param sftp      */      public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {          try {              sftp.cd(directory);              File file=new File(saveFile);              sftp.get(downloadFile, new FileOutputStream(file));          } catch (Exception e) {              e.printStackTrace();          }      }        /**      * 删除文件      * @param directory 要删除文件所在目录      * @param deleteFile 要删除的文件      * @param sftp      */      public void delete(String directory, String deleteFile, ChannelSftp sftp) {          try {              sftp.cd(directory);              sftp.rm(deleteFile);          } catch (Exception e) {              e.printStackTrace();          }      }        /**      * 列出目录下的文件      * @param directory 要列出的目录      * @param sftp      * @return      * @throws SftpException      */        @SuppressWarnings("unchecked")      public Vector<LsEntry> listFiles(String directory, ChannelSftp sftp) throws SftpException{          return sftp.ls(directory);      }        public static void main(String[] args) throws Exception {  //      MySFTP sf = new MySFTP();  //      ChannelSftp  sftp = sf.connect(host, port, username, password); //获取连接  //  //      //sf.upload(directory, uploadFile, sftp);   //上传文件  //  //      sf.download(directory, downloadFile, saveFile, sftp);  //删除文件            //  sf.delete(directory, deleteFile, sftp); //删除文件            //      Vector<LsEntry> files = sf.listFiles(directory, sftp);        //查看文件列表          //      for (LsEntry file : files) {            //          System.out.println(file.getFilename());          //      }        }  }  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表