zoukankan      html  css  js  c++  java
  • java 通过sftp服务器上传下载删除文件

    import java.io.*;
    import java.util.*;
    
    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.ChannelSftp.LsEntry;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
    
    public class SftpClientUtil {
    
        /**
         * Sftp
         */
        ChannelSftp sftp = null;
        /**
         * 主机
         */
        private String host = "";
        /**
         * 端口
         */
        private int port = 0;
        /**
         * 用户名
         */
        private String username = "";
        /**
         * 密码
         */
        private String password = "";
    
        /**
         * 构造函数
         *
         * @param host     主机
         * @param port     端口
         * @param username 用户名
         * @param password 密码
         */
        public SftpClientUtil(String host, int port, String username,String password) {
            this.host = host;
            this.port = port;
            this.username = username;
            this.password = password;
        }
    
        /**
         * 连接sftp服务器
         *
         * @throws Exception
         */
        public void connect() throws Exception {
    
            JSch jsch = new JSch();
            Session sshSession = jsch.getSession(this.username, this.host);
    
            sshSession.setPassword(password);
            Properties sshConfig = new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            sshSession.connect();
            Channel channel = sshSession.openChannel("sftp");
            channel.connect();
            this.sftp = (ChannelSftp) channel;
        }
    
        /**
         * 关闭连接
         *
         * @throws Exception
         */
        public void disconnect() throws Exception {
            if (this.sftp != null) {
                if (this.sftp.isConnected()) {
                    this.sftp.disconnect();
                } else if (this.sftp.isClosed()) {
    
                }
            }
        }
    
        /**
         * 上传单个文件
         *
         * @param directory  上传的目录
         * @param uploadFile 要上传的文件
         * @throws Exception
         */
        public void upload(String directory, String uploadFile) throws Exception {
            this.sftp.cd(directory);
            File file = new File(uploadFile);
            this.sftp.put(new FileInputStream(file), file.getName());
        }
    
        /**
         * 上传目录下全部文件
         *
         * @param directory 上传的目录
         * @throws Exception
         */
        public void uploadByDirectory(String directory) throws Exception {
    
            String uploadFile = "";
            List<String> uploadFileList = this.listFiles(directory);
            Iterator<String> it = uploadFileList.iterator();
    
            while (it.hasNext()) {
                uploadFile = it.next().toString();
                this.upload(directory, uploadFile);
            }
        }
    
        /**
         * 下载单个文件
         *
         * @param directory     下载目录
         * @param downloadFile  下载的文件
         * @param saveDirectory 存在本地的路径
         * @throws Exception
         */
        public void download(String directory, String downloadFile, String saveDirectory) throws Exception {
            String saveFile = saveDirectory + "//" + downloadFile;
    
            this.sftp.cd(directory);
            File file = new File(saveFile);
            this.sftp.get(downloadFile, new FileOutputStream(file));
        }
    
        /**
         * 下载目录下全部文件
         *
         * @param directory     下载目录
         * @param saveDirectory 存在本地的路径
         * @throws Exception
         */
        public void downloadByDirectory(String directory, String saveDirectory) throws Exception {
            String downloadFile = "";
            List<String> downloadFileList = this.listFiles(directory);
            Iterator<String> it = downloadFileList.iterator();
    
            while (it.hasNext()) {
                downloadFile = it.next().toString();
                if (downloadFile.toString().indexOf(".") < 0) {
                    continue;
                }
                this.download(directory, downloadFile, saveDirectory);
            }
        }
    
        /**
         * 删除文件
         *
         * @param directory  要删除文件所在目录
         * @param deleteFile 要删除的文件
         * @throws Exception
         */
        public void delete(String directory, String deleteFile) throws Exception {
            this.sftp.cd(directory);
            this.sftp.rm(deleteFile);
        }
    
        /**
         * 列出目录下的文件
         *
         * @param directory 要列出的目录
         * @return list 文件名列表
         * @throws Exception
         */
        @SuppressWarnings("unchecked")
        public List<String> listFiles(String directory) throws Exception {
    
            Vector fileList;
            List<String> fileNameList = new ArrayList<String>();
    
            fileList = this.sftp.ls(directory);
            Iterator it = fileList.iterator();
    
            while (it.hasNext()) {
                String fileName = ((LsEntry) it.next()).getFilename();
                if (".".equals(fileName) || "..".equals(fileName)) {
                    continue;
                }
                fileNameList.add(fileName);
    
            }
    
            return fileNameList;
        }
    
        /**
         * 更改文件名
         *
         * @param directory 文件所在目录
         * @param oldFileNm 原文件名
         * @param newFileNm 新文件名
         * @throws Exception
         */
        public void rename(String directory, String oldFileNm, String newFileNm) throws Exception {
            this.sftp.cd(directory);
            this.sftp.rename(oldFileNm, newFileNm);
        }
    
        public void cd(String directory) throws Exception {
            this.sftp.cd(directory);
        }
    
        public InputStream get(String directory) throws Exception {
            InputStream streatm = this.sftp.get(directory);
            return streatm;
        }
    
    }
    
    
  • 相关阅读:
    nodejs实战的github地址,喜欢的你还等啥
    java初始化深度剖析
    第三篇之消息的收发
    第二篇之收发消息的封装
    微信公众号开发第一篇之基本开发环境的搭建
    微信开发调试工具
    微信公众号开发入门教程第一篇
    linux常见驱动修改
    微信硬件开发步骤
    Linux系统快速启动方案
  • 原文地址:https://www.cnblogs.com/gkgkgk/p/14122120.html
Copyright © 2011-2022 走看看