zoukankan      html  css  js  c++  java
  • SFTP文件上传与下载

    SFTP是对ftp进行加密的一种文件协议.

    首先是先引入:jsch-0.1.42-sources.jar与jsch-0.1.42.jar包

    SFTP文件上传与下载。

    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;
    
    
    /**
     * sftp文件上传与下载
     *
     */
    
    public class SFTPUtil {
    
        /**
         * 连接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, File file, ChannelSftp sftp) {
            try {
                sftp.cd(directory);
                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) {
            
        
            File file = new File("E:/apache-tomcat-7.0.54/RUNNING.txt");  
            SFTPUtil sf = new SFTPUtil();
            String host = "114.215.119.231";
            int port = 22;
            String username = "root";
            String password = "";
            String directory = "/javawork/zmcc";
            String uploadFile = "E:/apache-tomcat-7.0.54/RUNNING.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");
           
           //关闭sftp连接

            Session session=sftp.getSession();
            session.disconnect();

    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    链接下载:http://pan.baidu.com/s/1mg8bDGW

  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/huzi007/p/4836200.html
Copyright © 2011-2022 走看看