(曾在天涯)的文章详细讲解了jsch中的函数以及用法

http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html

http://www.cnblogs.com/longyg/archive/2012/06/25/2561332.html

下面是一个例子:

package com.util;

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.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.ChannelSftp.LsEntry;

public class Jsch4Sftp {
 /**
  * 连接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;
   // sshSession.disconnect();
   System.out.println("Connected to " + host + ".");
  } catch (Exception e) {

}
  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
  */
 public Vector<LsEntry> listFiles(String directory, ChannelSftp sftp)
   throws SftpException {
  return sftp.ls(directory);
 }

public static void main(String[] args) {    
     Jsch4Sftp sf = new Jsch4Sftp();    
        String host = "***";    
        int port = 22; 
        String username = "***";    
        String password = "***";    
        String directory = "/home";    
        String saveFile = "1.zip";    
        String downLoadDirectory = "D:\\";    
        ChannelSftp sftp = null;    
        Session sshSession = null;
        try {    
            JSch jsch = new JSch();    
            jsch.getSession(username, host, port);   
            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 + ".");    
               
               
               
//          sf.upload(directory, uploadFile, sftp);    
//          sf.download(directory, downloadFile, saveFile, sftp);    
    //      sf.delete(directory, deleteFile, sftp);    
           
//          sftp.cd(directory);    
               
               
            Vector<LsEntry> v = sf.listFiles(directory, sftp);   
            for (LsEntry e : v) {    
                if(!e.getFilename().startsWith(".")) {    
                    saveFile = downLoadDirectory + e.getFilename();   
                    sf.download(directory, e.getFilename(), saveFile, sftp);   
                }   
            }   
            System.out.println("finished");    
        } catch (Exception e) {    
            e.printStackTrace();   
        } finally {    
            sftp.exit();   
            sshSession.disconnect();   
        }   
    }}

最新文章

  1. Linux运维工程师入门的10大实用工具
  2. Leetcode 8 String to Integer (atoi) 字符串处理
  3. ubuntu 添加管理员账户
  4. Jenkins进阶系列之——05FTP publisher plugin插件
  5. PHP生成token防止表单重复提交
  6. Java Properties类
  7. noip 2005 等价表达式
  8. java事件处理2
  9. Cgroup maintainer丽泽范:解剖Linux核心容器技术
  10. iOS推送,看这篇足够了
  11. 内存数据网格hazelcast的一些机制原理
  12. 升鲜宝V2.0_生鲜配送行业,对生鲜配送系统开发与实施的深度对比与思考_升鲜宝生鲜配送系统_15382353715_余东升
  13. 聊聊call、apply、bind的故事
  14. IDEA修改module的名字
  15. django项目验证码(PIL库实现)
  16. session操作类
  17. 什么是socket?
  18. SecureCRT 会话空闲时超时退出处理
  19. centos7.3安装配置vsftp
  20. IntelliJ IDEA编写的spark程序在远程spark集群上运行

热门文章

  1. iconv字符转换
  2. C++中的对象的赋值和复制
  3. 1、Question: prep_reads.info vs. align_summary.txt
  4. 让开发更简单 —— Coding Enterprise 发布
  5. 16.CTF综合靶机渗透(九)
  6. 21. Bypass D盾_防火墙(旧版 and 新版)SQL注入防御(多姿势)
  7. sql获取上月同期
  8. [CentOS7] 挂载iso镜像文件到/media目录下
  9. kylin cube 构建过程
  10. MacOS下,Python2和Python3完美兼容使用(转)