Java从SFTP服务器下载文件

最近对接一个需求,要用SFTP去服务器上取文件,这里记录下自己的思路。

SFTP下载文件需要用到jsch的jar包,我用的是jsch-0.1.54.jar,可以到http://www.jcraft.com/jsch/中下载到最新的jsch的jar包,源码以及实例。

package test;

import java.io.File;
import java.util.Properties;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

public class SFTP {  

          public static void main (String[] args) {
            /* 
         * 下载文件 
         *  
         * @param sftp_ip SFTP IP地址  
         * @param sftp_username SFTP 用户名 
         * @param sftp_password SFTP用户名密码 
         * @param sftp_port SFTP端口 
         * @param sftp_path SFTP服务器中文件所在路径  
         * @param localPath 下载到本地的路径  
         * @param fileName 下载文件的名称 
         */    
            String sftp_ip = "10.10.93.78";  
            String sftp_username = "digi";  
            String sftp_password = "123456";  
            int sftp_port = 22;  
            String sftp_path = "/";  
            String localPath = "D:/";  
            String fileName = "135.txt";  
            try {
                downloadSftpFile(sftp_ip, sftp_username, sftp_password, sftp_port, sftp_path, localPath, fileName);
            } catch (JSchException e) {
                e.printStackTrace();
            }  
          }

        public static void downloadSftpFile(String sftp_ip, String sftp_username, String sftp_password, int sftp_port, String sftp_path, String localPath, String fileName) throws JSchException {  

            Session session = null;  
            Channel channel = null;
            JSch jsch = new JSch();  
            session = jsch.getSession(sftp_username, sftp_ip, sftp_port);  
            session.setPassword(sftp_password);  
            session.setTimeout(1000);  
            Properties config = new Properties();
    //设置不用检查HostKey,设成yes,一旦计算机的密匙发生变化,就拒绝连接。  
            config.put("StrictHostKeyChecking", "no");  
            session.setConfig(config);  
            session.connect();  

            channel = session.openChannel("sftp");  
            channel.connect();  
            ChannelSftp chSftp = (ChannelSftp) channel;  

            String localFilePath = localPath + File.separator;

            try {
        //使用ChannelSftp的get(文件名,本地路径{包含文件名})方法下载文件  
                chSftp.get(fileName, localFilePath);  
            } catch (Exception e) {  
                e.printStackTrace();  
                System.out.println("download error.");  
            } finally {  
                chSftp.quit();  
                channel.disconnect();  
                session.disconnect();  
            }  
        }  
    }  

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值