Java操作SFTP

import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

/**
 * @description SFTP工具
 * @author Luxh
 */
public class SFTPUtils {

    private static final Logger Log = LoggerFactory.getLogger(SFTPUtils.class);

    /**FTP协议*/
    private static final String FTP_PROTOCOL = "sftp";

    /**
     * 获取session
     * @param host
     * @param port
     * @param username
     * @param password
     * @return
     */
    public static Session getSession(String host, int port, String username, String password) {
        Session session = null;
        try {
            Log.info("init session...");

            JSch jsch = new JSch();
            session = jsch.getSession(username, host, port);
            session.setPassword(password);
            Properties config = new Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.connect();

            Log.info("init session successful");
        }catch(Exception e) {
            Log.error("init session failed");

        }
        return session;
    }

    /**
     * 获取 ChannelSftp
     * @param session
     * @return
     */
    public static ChannelSftp getChannelSftp(Session session){
        ChannelSftp sftp = null;
        try{
            Log.info("init ChannelSftp...");

            Channel channel = session.openChannel(FTP_PROTOCOL);
            channel.connect();
            sftp = (ChannelSftp) channel;

            Log.info("init ChannelSftp successful");
        }catch(Exception e) {
            Log.error("init ChannelSftp failed");

        }
        return sftp;

    }

    /**
     * 上传
     * @param src 源文件路径
     * @param dst    目标文件路径
     * @param sftp
     */
    public static void upload(String src, String dst, ChannelSftp sftp) {
        try {
            Log.info("begin upload...");
            Log.info("src file is:{}", src);
            Log.info("dst file is:{}", dst);
            sftp.put(src, dst);
            Log.info("upload successful");
        } catch (Exception e) {
            Log.error("upload failed");

        }
    }

    /**
     * 下载
     * @param src    要下载的文件
     * @param dst    存放路径
     * @param sftp
     */
    public static void download(String src, String dst, ChannelSftp sftp) {
        try {
            Log.info("begin download...");
            Log.info("src file is:{} ", src);
            Log.info("dst file is:{} ", dst);
            sftp.get(src, dst);
            Log.info("download successful");
        } catch (Exception e) {
            Log.error("download failed");

        }
    }

    /**
     * 删除
     * @param path    要删除的文件路径
     * @param sftp
     */
    public static void delete(String path, ChannelSftp sftp) {
        try {
            Log.info("begin delete...");
            Log.info("dst file is:  {}", path);
            sftp.rm(path);
            Log.info("delete successful");
        } catch (Exception e) {
            Log.error("delete failed");

        }
    }

    /**
     * 关闭连接
     * @param session
     * @param sftp
     */
    public static void close(Session session, ChannelSftp sftp){
        if(sftp != null) {
            sftp.disconnect();
            Log.info("ChannelSftp disconnect");
        }
        if(session != null) {
            session.disconnect();
            Log.info("Session disconnect");
        }
    }

}
时间: 2024-07-30 16:51:30

Java操作SFTP的相关文章

.net 操作sftp服务器

因为项目的需要,整理了一段C#操作sftp的方法. 依赖的第三方类库名称为:SharpSSH 1.1.1.13. 代码如下: 1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Text; 5: using System.Collections.Specialized; 6: using System.Configuration; 7: using Tamir.Sh

java 操作 Excel,java导出excel

WritableWorkbook out = null; try { response.getServletResponse().reset(); ((HttpServletResponse) response.getServletResponse()).setHeader("Content-Disposition", "attachment;filename=export.xls"); response.getServletResponse().setConten

java操作hbase例子

hbase安装方法请参考:hbase-0.94安装方法详解 hbase常用的shell命令请参考:hbase常用的shell命令例子 java操作hbase,在eclipse中创建一个java项目,将hbase安装文件根目录的jar包和lib目录下jar包导入项目,然后就可以编写java代码操作hbase了.下面代码给出来一个简单的示例 /** * @date 2015-07-23 21:28:10 * @author sgl */ package com.songguoliang.hbase;

java 操作oracle 建表,更新记录

1.  建立表的类 import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.PreparedStatement; public class lx01{ public static void main(String[] args) throws SQLException, ClassNotFoundE

Java操作IO各主要类介绍

DataInputStream和DataOutputStream 往二进制文件中读和写入java基本数据类型 public class BinaryReadWrite { private DataInputStream dis = null; private DataOutputStream dos = null; private String s_FilePath = "config\\bin.dat"; private byte[] buff = "{\"nam

JAVA操作properties文件

java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便.一.properties文件test.properties------------------------------------------------------###########

Java操作XML的JAXB工具

在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding). 利用这个工具很方便生成XML的tag和Java类的对应关系.参照网上的资料,简单说明一下java操作xml的一些东西. 1.先定义一个XML Schema文件.比如: [html] view plain copy print? <?xml version="1.0" encoding="UTF-8" standalone=&quo

java操作xml的一个小例子

最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要定义好bean的层次结构就可以了,第三方包会自动生成和解析xml. 但是今天发现,这个包有两个问题: 一个是比较复杂(我是菜鸟,求别喷,我真的觉得他挺复杂的..).比如说你要想处理既有属性又有值的xml就比较麻烦.(@XStreamConverter注解这种方法报这个错:com.thoughtwor

java操作Excel

一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象.它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等. 二.HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”.也许HSSF的名字有点