[转载]Java从SFTP服务器下载文件

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

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


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();  
            }  
        }  
    }  


--------------------- 
作者:Frank_lyn 
来源:CSDN 
原文:https://blog.csdn.net/omelon1/article/details/78677616?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Java)