• JAVA实现SFTP实例


    最近写的一个JAVA实现SFTP的实例:

    /*
    * Created on 2009-9-14
    * Copyright 2009 by www.xfok.net. All Rights Reserved
    *
    */

    package net.xfok.ftp;

    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;

    /**
    * @author YangHua
    * 转载请注明出处:http://www.xfok.net/2009/10/124485.html
    */
    public class MySFTP {

    /**
    * 连接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) {

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

    public static void main(String[] args) {
    MySFTP sf = new MySFTP(); 
    String host = "192.168.0.1";
    int port = 22;
    String username = "root";
    String password = "root";
    String directory = "/home/httpd/test/";
    String uploadFile = "D:\tmp\upload.txt";
    String downloadFile = "upload.txt";
    String saveFile = "D:\tmp\download.txt";
    String deleteFile = "delete.txt";
    ChannelSftp sftp=sf.connect(host, port, username, password);
    sf.upload(directory, uploadFile, sftp);
    sf.download(directory, downloadFile, saveFile, sftp);
    sf.delete(directory, deleteFile, sftp);
    try{
    sftp.cd(directory);
    sftp.mkdir("ss");
    System.out.println("finished");
    }catch(Exception e){
    e.printStackTrace();


    }

  • 相关阅读:
    XMLHttpRequest 对象 的属性与方法
    永远的福气 陈慧琳
    win32.Jadtre.B不用删除文件解决办法(网页嵌入一段恶意js )
    整理一些PHP函数,这些函数用的不是非常多,但是又非常重要,如果适当的用起来,有可以提升性能
    循环file_get_contents()部分内容不能获取的问题
    php下载图片到用户客户端
    php中break,continue,exit的使用与区别
    解决android setText不能int的问题
    用htaccess限制ip访问的方法
    查看表结构的命令show columns from 表名
  • 原文地址:https://www.cnblogs.com/zhangding/p/5588260.html
Copyright © 2020-2023  润新知