import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.Properties; import com.jcraft.jsch.*; /**
* SFTP工具类
*/
public class SftpUtil {
static Session sshSession = null; /**
* 获取ChannelSftp
*/
public static ChannelSftp getConnectIP(String host, String sOnlineSftpPort, String username, String password) {
int port = 0;
if (!("".equals(sOnlineSftpPort)) && null != sOnlineSftpPort) {
port = Integer.parseInt(sOnlineSftpPort);
}
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jsch.getSession(username, host, port);
sshSession = jsch.getSession(username, host, port);
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
} catch (Exception e) {
System.out.println("连接sftp失败");
e.printStackTrace();
}
System.out.println("连接sftp成功");
return sftp;
} /**
* 上传
*/
public static void upload(String directory, String uploadFile, ChannelSftp sftp) {
try {
//检查路径
if(!isExist(sftp, directory)){
System.out.println("创建sftp服务器路径失败:" + directory);
return;
}
sftp.cd(directory);
File file = new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
System.out.println("上传成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sftp.isConnected()) {
sshSession.disconnect();
sftp.disconnect();
} }
} /**
* 判断文件夹是否存在
* true 目录创建成功,false 目录创建失败
* @param sftp
* @param filePath 文件夹路径
* @return
*/
public static boolean isExist(ChannelSftp sftp, String filePath) {
String paths[] = filePath.split("\\/");
String dir = paths[0];
for (int i = 0; i < paths.length - 1; i++) {
dir = dir + "/" + paths[i + 1];
try{
sftp.cd(dir);
}catch(SftpException sException){
if(sftp.SSH_FX_NO_SUCH_FILE == sException.id){
try {
sftp.mkdir(dir);
} catch (SftpException e) {
e.printStackTrace();
return false;
}
}
}
}
return true;
} /**
* 下载
*/
public static void download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) {
try {
String src = directory + "/" + downloadFile;
String dst = saveFile + "/" + downloadFile;
System.out.println("开始下载,sftp服务器路径:[" + src + "]目标服务器路径:[" + dst + "]");
sftp.get(src, dst);
System.out.println("下载成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sftp.isConnected()) {
sshSession.disconnect();
sftp.disconnect();
} }
} /**
* 查看
*/
public static List<String> check(String directory, ChannelSftp sftp) {
List<String> fileList = new ArrayList<>();
try {
sftp.cd(directory);
ListIterator a = sftp.ls(directory).listIterator();
while (a.hasNext()) {
fileList.add((String) a.next());
} } catch (Exception e) {
e.printStackTrace();
} finally {
if (sftp.isConnected()) {
sshSession.disconnect();
sftp.disconnect();
} }
return fileList;
} /**
* 删除
*/
public static void delete(String directory, String deleteFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
sftp.rm(deleteFile);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sftp.isConnected()) {
sshSession.disconnect();
sftp.disconnect();
} }
} public static void main(String[] args) {
ChannelSftp ftp = getConnectIP("x.x.x.x", "21", "user", "pwd");
// 上传
upload("sftpFile/data", "E://456.docx", ftp);
// 下载
download("sftpFile/data", "456.docx", "D://", ftp);
} }

  

java之SFTP上传下载的更多相关文章

  1. Java Sftp上传下载文件

    需要使用jar包  jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import ja ...

  2. java:工具(汉语转拼音,压缩包,EXCEL,JFrame窗口和文件选择器,SFTP上传下载,FTP工具类,SSH)

    1.汉语转拼音: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuP ...

  3. JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)

    package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...

  4. THINKPHP 3.2 PHP SFTP上传下载 代码实现方法

     一.SFTP介绍:使用SSH协议进行FTP传输的协议叫SFTP(安全文件传输)Sftp和Ftp都是文件传输协议.区别:sftp是ssh内含的协议(ssh是加密的telnet协议),  只要sshd服 ...

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

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...

  6. CentOS下安装配置NFS并通过Java进行文件上传下载

    1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...

  7. java实现文件上传下载

    喜欢的朋友可以关注下,粉丝也缺. 今天发现已经有很久没有给大家分享一篇技术文章了,于是想了一下给大家分享一篇java实现文件上传下载功能的文章,不喜欢的希望大家勿喷. 想必大家都知道文件的上传前端页面 ...

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

    SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd  d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文 ...

  9. java 实现Serv-U FTP 和 SFTP 上传 下载

    两种ftp使用java的实现方式 ,代码都已测试 第一种:Serv-U FTP 先决条件: 1.Serv-U FTP服务器搭建成功. 2.jar包需要:版本不限制 <!--ftp上传需要的jar ...

随机推荐

  1. 五、Spring Web应用程序构建

    内容 映射请求到Spring控制器 透明地绑定表单参数 校验表单提交 关键词 模型-视图-控制器(Model-View-Controller,MVC) 处理器映射(handle mapping) 视图 ...

  2. 二、React初体验之React组件创建

    (中间因为应付各种考试,处理其他事情,隔了好时间没更新,现在终于有时间了,续上!) 本文为React初始体验,因此先不考虑文件如何组织,尽量以最简单的方式让大家了解React其中的原理. 在创建组件( ...

  3. SpringBoot获取配置文件,就这么简单。

    在讲SpringBoot 获取配置文件之前我们需要对SpringBoot 的项目有一个整体的了解,如何创建SpringBoot 项目,项目结构等等知识点,我在这里就不一一讲述了,没有学过的小伙伴可以自 ...

  4. CSS 风车(花瓣)旋转动画圆角

    这是一个综合的案例,用到了transition(动画,动作在单位时间内完成),transform(旋转),border-radius(圆角),absolute(定位),linear-gradient( ...

  5. ActiveMQ 反序列化漏洞(CVE-2015-5254)复现

    1.运行漏洞环境 sudo docker-compose up -d 环境运行后,将监听61616和8161两个端口.其中61616是工作端口,消息在这个端口进行传递:8161是Web管理页面端口.访 ...

  6. 面试题: SpringBoot 的自动配置原理

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 3.Spring Boot 的自动配置原理 package com.mmall; import org. ...

  7. SpringBoot 之 拦截配置 与SpringCloud

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.SpringBoot 与 SpringMVC  的区别? SpringMVC是基于Spring的MV ...

  8. Java实现 LeetCode 385 迷你语法分析器

    385. 迷你语法分析器 给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器. 列表中的每个元素只可能是整数或整数嵌套列表 提示:你可以假定这些字符串都是格式良好的: 字符串非空 字符串 ...

  9. 第三届蓝桥杯JavaC组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1. 填算式 [结果填空] (满分11分) 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字. ...

  10. java实现孪生素数

    ** 孪生素数** 孪生素数 所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,就象孪生兄弟一样.最小的孪生素数是 (3, 5),在 100 以内的孪生素数还有 (5, 7 ...