当前位置:首页 > 开发 > 编程语言 > Java > 正文

java-jsch实现sftp文件操作

发表于: 2013-06-26   作者:coconut_zhang   来源:转载   浏览次数:
摘要: (曾在天涯)的文章详细讲解了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; i

(曾在天涯)的文章详细讲解了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();  
        }  
    }}

java-jsch实现sftp文件操作

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
前段时间一直忙着作业,实验,动手的时间真是少之又少,今天终于可以继续和大家分享关于 JSP 的学习
Sublime Text 2 本身并不强大,但是它方便使用插件扩展功能,所以变得很强大。今天介绍一个很实用的
Sublime Text 2 本身并不强大,但是它方便使用插件扩展功能,所以变得很强大。今天介绍一个很实用的
Sublime Text 2 本身并不强大,但是它方便使用插件扩展功能,所以变得很强大。今天介绍一个很实用的
Sublime Text 2 本身并不强大,但是它方便使用插件扩展功能,所以变得很强大。今天介绍一个很实用的
Sublime Text 2 本身并不强大,但是它方便使用插件扩展功能,所以变得很强大。今天介绍一个很实用的
Sublime Text 2 本身并不强大,但是它方便使用插件扩展功能,所以变得很强大。今天介绍一个很实用的
1、 在Android的java层实现文件的读写操作是非常简单的 在JNI层实现文件的读写操作的话,就要使用到l
首先,打开secure-crt,用ssh协议远程登录服务器后,点击secure-crt的“file”菜单,选择“connect
远程linux端安装好OpenSSH-Server,并开启SSH服务的时候就可以使用SFTP功能了, secure CRT 设置 在wi
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号