JAVA代码时间SFTP文件的下载

Posted 老夫很紧张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA代码时间SFTP文件的下载相关的知识,希望对你有一定的参考价值。

参考文章:http://blog.csdn.net/smallerpig/article/details/50976191

SFTP文件的下载与FTP文件的下载差别较大,需要下载jsch-0.1.54jar包

package com.cd.util;

  
import com.jcraft.jsch.JSchException;  
  
  
public class SftpDownloadTestScript {  
    
    public static void main (String[] args)throws JSchException {  
          
        String ftpHost = "192.168.188.155";  
        String ftpUserName = "exftp";  
        String ftpPassword = "sFtP06222013";  
        int ftpPort = 22;  
        String ftpPath = ".";  
        String localPath = "D:/SFTP/uploadFiles/demo";  
        String fileName = "aa.jpg";  
        FtpUtil.downloadSftpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);  
    }  
}  
package com.cd.util;



import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.OutputStream;  
import java.net.SocketException;  
import java.util.Properties;  
  













import org.apache.commons.logging.Log;  
import org.apache.commons.logging.LogFactory;  
  













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 FtpUtil {  
  
    private final static Log logger = LogFactory.getLog(FtpUtil.class);  
  
      
    /* 
     * 从SFTP服务器下载文件 
     *  
     * @param ftpHost SFTP IP地址 
     *  
     * @param ftpUserName SFTP 用户名 
     *  
     * @param ftpPassword SFTP用户名密码 
     *  
     * @param ftpPort SFTP端口 
     *  
     * @param ftpPath SFTP服务器中文件所在路径 格式: ftptest/aa 
     *  
     * @param localPath 下载到本地的位置 格式:H:/download 
     *  
     * @param fileName 文件名称 
     */  
    public static void downloadSftpFile(String ftpHost, String ftpUserName,  
            String ftpPassword, int ftpPort, String ftpPath, String localPath,  
            String fileName) throws JSchException {  
        Session session = null;  
        Channel channel = null;  
  
        JSch jsch = new JSch();  
        System.out.println(1);
        session = jsch.getSession(ftpUserName, ftpHost, ftpPort);  
        System.out.println(2);
        session.setPassword(ftpPassword);  
        System.out.println(3);
        session.setTimeout(100000);  
        System.out.println(4);
        Properties config = new Properties();  
        System.out.println(5);
        config.put("StrictHostKeyChecking", "no");  
        System.out.println(6);
        session.setConfig(config);  
        System.out.println(7);
        session.connect();  
        System.out.println(8);
  
        channel = session.openChannel("sftp");  
        System.out.println(9);
        channel.connect();  
        ChannelSftp chSftp = (ChannelSftp) channel;  
        System.out.println(10);
  
        String ftpFilePath = ftpPath + "/" + fileName;  
        String localFilePath = localPath + File.separatorChar + fileName;  
        System.out.println(11);
        try {  
            System.out.println("ftpFilePath="+ftpFilePath);
            System.out.println("localFilePath="+localFilePath);
            System.out.println("localPath="+localPath);
            chSftp.get(ftpFilePath, localPath); 
            System.out.println(13);
        } catch (Exception e) {  
            e.printStackTrace();  
            logger.info("download error.");  
        } finally {  
            chSftp.quit();  
            channel.disconnect();  
            session.disconnect();  
        }  
  
    }  
  
}  

下面是SFTP根目录: 

 

以上是关于JAVA代码时间SFTP文件的下载的主要内容,如果未能解决你的问题,请参考以下文章

我的代码库-Java8实现FTP与SFTP文件上传下载

jsch连接sftp后连接未释放掉问题排查

java通过sftp上传文件

SFTP服务配置以及命令/代码操作

用java写一个sftp客户端程序 能够上一个sftp的目录下载文件到本地指定目录

如何使用 pysftp 从 SFTP 下载文件?