zoukankan      html  css  js  c++  java
  • java实现sftp文件上传下载

    /**
         * 
         * @param filePath 文件全路径 
         * @param ftpPath 上传到目的端目录
         * @param username
         * @param password
         * @param host
         * @param port
         */
        public static void uploadFile(String filePath, String ftpPath, String username, String password, String host, Integer port) {
            FileInputStream input = null;
            ChannelSftp sftp = null;
            try {
                JSch jsch = new JSch();
                //获取session  账号-ip-端口
                com.jcraft.jsch.Session sshSession = jsch.getSession(username, host, port);
                //添加密码
                sshSession.setPassword(password);
                Properties sshConfig = new Properties();
                //严格主机密钥检查
                sshConfig.put("StrictHostKeyChecking", "no");
                sshSession.setConfig(sshConfig);
                //开启session连接
                sshSession.connect();
                //获取sftp通道
                sftp = (ChannelSftp) sshSession.openChannel("sftp");
                //开启
                sftp.connect();
                //文件乱码处理
                /*Class<ChannelSftp> c = ChannelSftp.class;
                Field f = c.getDeclaredField("server_version");
                f.setAccessible(true);
                f.set(sftp, 2);
                sftp.setFilenameEncoding("GBK");*/
                //判断目录是否存在
                try {
                    Vector ls = sftp.ls(ftpPath); //ls()得到指定目录下的文件列表
                    /*if (ls == null) {   //ls不会为null,哪怕它是一个空目录
                        sftp.mkdir(ftpPath);
                    }*/
                } catch (SftpException e) {
                    sftp.mkdir(ftpPath);
                }
                sftp.cd(ftpPath);
                String filename = filePath.substring(filePath.lastIndexOf(File.separator) + 1); //附件名字
                //filename = new String(filename.getBytes("GBK"), StandardCharsets.ISO_8859_1);
                input = new FileInputStream(new File(filePath));
                sftp.put(input, filename);
                //设定777权限,转为8进制放入chmod中
                //sftp.chmod(Integer.parseInt("777", 8), ftpPath + filename);
                input.close();
                sftp.disconnect();
                sshSession.disconnect();
                System.out.println("================上传成功!==================");
            } catch (Exception e) {
                System.out.println("================上传失败!==================");
                e.printStackTrace();
            }
        }
    
        /**
         * @param directory    SFTP服务器的文件路径
         * @param downloadFile SFTP服务器上的文件名
         * @param saveFile     保存到本地路径
         * @param username
         * @param password
         * @param host
         * @param port
         */
        public static void downloadFile(String directory, String downloadFile, String saveFile, String username, String password, String host, Integer port) {
            ChannelSftp sftp = null;
            try {
                JSch jsch = new JSch();
                //获取session  账号-ip-端口
                com.jcraft.jsch.Session sshSession = jsch.getSession(username, host, port);
                //添加密码
                sshSession.setPassword(password);
                Properties sshConfig = new Properties();
                //严格主机密钥检查
                sshConfig.put("StrictHostKeyChecking", "no");
                sshSession.setConfig(sshConfig);
                //开启session连接
                sshSession.connect();
                //获取sftp通道
                sftp = (ChannelSftp) sshSession.openChannel("sftp");
                //开启
                sftp.connect();
                if (directory != null && !"".equals(directory)) {
                    sftp.cd(directory);
                }
                FileOutputStream output = new FileOutputStream(new File(saveFile));
                sftp.get(downloadFile, output);
                output.close();
                sftp.disconnect();
                sshSession.disconnect();
                System.out.println("================下载成功!==================");
            } catch (SftpException | FileNotFoundException | JSchException e) {
                log.error("文件下载异常!", e);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    Python和C#基本算法实现对比
    数据库并发
    NetCore 启动地址配置详解
    SkyWalking Liunx 环境搭建&NetCore接入
    Autofac踩坑经历
    centos 7 安装elasticsearch
    centos 7 java1.8安装
    AppDomin学习与分享
    .Net 程序代码混淆加密工具 ILProtector
    c# 重新认识 Double 浮点型
  • 原文地址:https://www.cnblogs.com/coderxiaobai/p/14506752.html
Copyright © 2011-2022 走看看