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

  • 相关阅读:
    Delphi实现文件关联
    用Delphi实现文件关联
    Delphi 7使用自定义图标关联文件类型
    redux-form的学习笔记
    妙用 `package.json` 快速 `import` 文件(夹)
    【webpack2】-- 入门与解析
    黑科技:CSS定制多行省略
    DOM操作和样式操作库的封装
    webstorm 2016 激活破解
    js/jq仿window文件夹框选操作插件
  • 原文地址:https://www.cnblogs.com/huzi007/p/4836200.html
Copyright © 2011-2022 走看看