SFTP上传下载

代码:

package com.changbei.intf.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Properties;
import java.util.Vector;

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;
import com.jcraft.jsch.SftpException;

public class SFTP {

    /**
     * @param args
     */
    public static void main(String[] args) {

        SFTP ftp = new SFTP();
        String host = "192.168.0.211";
        int port = 22;
        String username = "root";
        String password = "root";
        String directory = "/opt/tomcat/";
        String uploadFile = "D:/test.txt";
//        String downloadFile = "ipconfig.txt";
//        String saveFile = "D:/ipconfig.txt";
//        String deleteFile = "ipconfig.txt";

        ChannelSftp sftp = ftp.connect(host, port, username, password);
        try {
            ftp.upload(directory, uploadFile, sftp);
//            ftp.download(directory, downloadFile, saveFile, sftp);
//            ftp.delete(directory, deleteFile, sftp);
//            sftp.cd(directory);
//            sftp.mkdir("createFolder");
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
            //如果没有sesstion的disconnect,程序不会退出
                sftp.getSession().disconnect();
            } catch (JSchException e) {
                e.printStackTrace();
            }
            sftp.disconnect();
            sftp.exit();
        }
    }

    /**
     * @AddBy: Ares
     * @Description: TODO(connect the host)
     * @param host
     * @param port
     * @param username
     * @param password
     * @return
     */
    public ChannelSftp connect(String host, int port, String username, String password) {
        ChannelSftp csftp = null;
        JSch jsch = new JSch();
        try {
            Session sshSession = jsch.getSession(username, host, port);
            System.out.println("jsch session created, user="+username);

            sshSession.setPassword(password);
            Properties sshConfig = new Properties();
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            sshSession.connect();
            System.out.println("session is connected.");

            Channel channel = sshSession.openChannel("sftp");
            channel.connect();

            csftp = (ChannelSftp)channel;
            System.out.println("connected to host:"+ host);

        } catch (JSchException e) {
            e.printStackTrace();
        }
        return csftp;
    }

    /**
     * @AddBy: Ares
     * @Description: TODO(upload file to host)
     * @param directory
     * @param uploadFile
     * @param sftp
     * @return
     */
    public boolean upload(String directory, String uploadFile, ChannelSftp sftp){
        File file = new File(uploadFile);
        try {
            sftp.cd(directory);
            sftp.put(new FileInputStream(file), file.getName());
            System.out.println("upload file success, file:"+uploadFile);
        } catch (Exception e) {
            System.err.println("upload file failed, file:"+uploadFile);
            e.printStackTrace();
            return false;
        }
        return true;
    }
    /**
     * @AddBy: Ares
     * @Description: TODO(download file from host)
     * @param directory
     * @param downloadFile
     * @param saveFile
     * @param sftp
     * @return
     */
    public boolean download(String directory, String downloadFile, String saveFile, ChannelSftp sftp){
        File file = new File(saveFile);
        try {
            sftp.cd(directory);
            sftp.get(downloadFile, new FileOutputStream(file));
            System.out.println("download file success, file:"+downloadFile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return false;
        } catch (SftpException e) {
            System.err.println("download file failed, file:"+downloadFile);
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * @AddBy: Ares
     * @Description: TODO(delete file of host)
     * @param directory
     * @param deleteFile
     * @param sftp
     * @return
     */
    public boolean delete(String directory, String deleteFile, ChannelSftp sftp){
        try {
            sftp.cd(directory);
            sftp.rm(deleteFile);
            System.out.println("delete file success, file:"+deleteFile);
        } catch (SftpException e) {
            System.err.println("delete file failed, file:"+deleteFile);
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * @AddBy: Ares
     * @Description: TODO(get file list from directory of host)
     * @param directory
     * @param sftp
     * @return
     */
    public Vector<?> listFiles(String directory, ChannelSftp sftp){
        try {
            return sftp.ls(directory);
        } catch (SftpException e) {
            System.err.println("list directory failed, directory:"+directory);
            e.printStackTrace();
        }
        return null;
    }

}

jar包maven下载地址:

<!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.53</version>
        </dependency>

时间: 2024-10-10 00:47:54

SFTP上传下载的相关文章

SFTP上传下载文件

secureCRT SFTP上传/下载文件 远程登陆IP secureCRT会话中点击SFTP 3.cd  /home/dowload       linux平台切换到/home/dowload目录 4.cd d:\   windows平台切换到d盘 5.put 文件名           上传 /home/dowload目录下 6.get 文件名   下载文件到windows平台 d盘

Java Sftp上传下载文件

需要使用jar包  jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import co

SFTP上传下载文件、文件夹常用操作

SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd  d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文件取出来)进入你要下的文件所在的文件夹:cd /usr/apache-tomcat-6.0.39/logs/下载:get catalina.out 5.上传文件(例如我要上传一个文件到usr目录下)进入你想要上传文件的目录cd /usr上传文件put do.sh 6.上传下载文件夹格式:下载文件夹g

Xshell5下利用sftp上传下载传输文件

sftp是Secure File TransferProtocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp与 ftp有着几乎一样的语法和功能.SFTP为 SSH的一部分,是一种传输档案至Blogger伺服器的安全方式.其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来

用jsch.jar实现SFTP上传下载删除

java类: 需要引用的jar: jsch-0.1.53.jar package com.isoftstone.www.ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Properties; import java.util.Vector; import com.jcraft.jsch.Channel; import com.jc

转: window中使用PSFTP/WinSCP实现SFTP上传下载

摘自百度百科 sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法. sftp 与 ftp 有着几乎一样的语法和功能. SFTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式. 其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应

JAVA Sftp 上传下载

SftpUtils package xxx;import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.ChannelSftp.LsEntry; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpATTRS; import com.jcraft.jsc

Sftp上传下载文件,部分代码取自网络,需要添加DiffieHellman.dll、Org.Mentalis.Security.dll、Tamir.SharpSSH.dll三个dll引用

using System; using System.Collections; using System.Collections.Generic; using System.IO; using Tamir.SharpSsh.java.io; using Tamir.SharpSsh.jsch; namespace EB.Mall.Core.Utils { public class SFTPHelper { private Session m_session; private Channel m_

如何在Linux中使用sFTP上传或下载文件与文件夹

如何在Linux中使用sFTP上传或下载文件与文件夹 sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全;它通过加密 SSH 传输处理所有操作.在本文中,我们将向你展示如何使用 sFTP 上传/下载整个目录(包括其子目录和子文件). 作者:Aaron Kili来源:Linux中国|2017-03-09 14:42 移动端 收藏 分享 51CTO诚邀您9月23号和秒拍/国美/美团元专家一起聊智能CDN的优化之路