ChannelSftp 远程下载目录
ChannelSftp 并不直接支持远程下载目录,
直接下载, 出现 : not supported to get directory ...
需要自己实现, 我的实现如下:
/**
* @param ftp_dir
* @param local_dir
* @param sftp
* @return
*/
public int downloadDir(String ftp_dir, String local_dir, ChannelSftp sftp) {
int sum = 0;
try {
File dir = new File(local_dir);
if (dir.isFile()) {
System.err.println(" is a file already " + dir);
return -1;
}
// if (!dir.exists()) {
// dir.mkdirs();
// }
// sftp.get(ftp_dir, new FileOutputStream(dir));
try {
Vector files = sftp.ls(ftp_dir);
if (files == null) {
return 0;
}
for (Iterator<ChannelSftp.LsEntry> iterator = files.iterator(); iterator.hasNext();) {
ChannelSftp.LsEntry str = iterator.next();
String filename = str.getFilename();
if (filename.equals(".") || filename.equals("..")) {
continue;
}
// System.out.println(filename + " --- " + str.getLongname());
SftpATTRS attrs = str.getAttrs();
boolean isdir = attrs.isDir();
boolean fifo = attrs.isFifo();
String local_file_path = local_dir + "/" + filename;
String ftp_file_path = ftp_dir + "/" + filename;
if (isdir) {
File dir2 = new File(local_file_path);
if (!dir2.exists()) {
System.out.println(" dir2.mkdir " + local_file_path);
dir2.mkdir();
} else {
boolean b = dir2.isDirectory();
if (!b) {
}
}
sum += downloadDir(ftp_file_path, local_file_path, sftp);
} else {
/**
* 判断本地文件是否存在, 如何存在, 而且 大小/ 最后修改时间相同, 则不进行下载。 TODO
*/
long size = attrs.getSize();
int aTime = attrs.getATime();
int mTime = attrs.getMTime();
downloadFile(ftp_file_path, local_file_path, sftp);
sum++;
}
}
} catch (SftpException e) {
e.printStackTrace();
}
return sum;
} catch (Exception e) {
e.printStackTrace();
return -1;
} finally {
}
}
ChannelSftp 远程下载目录的更多相关文章
- Linux scp 远程文件/目录传输
Linux scp远程文件/目录传输 1.获取远程服务器上的文件 scp -P 22 root@www.test.com:/root/test.tar.gz /home/test.tar.gz 上端口 ...
- LINUX安装SVN+添加自动同步+远程下载最新代码
LINUX安装SVN+添加自动同步+远程下载最新代码---------------------1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作--------------- ...
- Python 模块功能paramiko SSH 远程执行及远程下载
模块 paramiko paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现 ...
- 基于Python——实现远程下载sftp文件(只下载.zip文件)
[背景]远程下载发布包等文件时,总是要使用WinSCP等工具登陆拖动.今天就介绍一种使用python下载文件到本地的方法. [代码实现] import paramiko # paramiko模块,基于 ...
- java操作远程共享目录
一.前言 根据客户反馈,在进行文件下载的时候,新增远程共享目录,下载对应的文件到远程共享目录,采用常用的IO操作模式,提示下载成功,但是客户去远程共享目录查看对应的下载文件,反馈说没有找到对应的文件. ...
- 树莓派2B安装Xware迅雷远程下载
转自:http://www.cnblogs.com/liangjh/articles/5347811.html 一.安装使用迅雷Xware (1)下载Xware1.0.31_armel_v5te_gl ...
- php远程下载文件
<?php /* 本源码来源于网络 http://user.qzone.qq.com/292672703 */ header("content-Type: text/html; cha ...
- 树莓派2安装Xware实现迅雷远程下载
首先,远程功能很实用,尤其是基于迅雷的,现在国内的下载基本上迅雷只手遮天,别的工具友好程度不理想,这是对于我这种小白来说. 首先,我的树莓派系统不是原生的,我烧写的是ubuntu16,没有桌面,没有多 ...
- Java远程下载文件到本地(http协议和ssh2协议)
Java中java.io包为我们提供了输入流和输出流,对文件的读写基本上都依赖于这些封装好的关于流的类中来实现.前段时间遇到了以下两种需求: 1.与某系统对接,每天获取最新的图片并显示在前端页面.该系 ...
随机推荐
- springboot springcloud 热部署
本文转载自:https://www.cnblogs.com/moly/p/7978303.html 可以在配置修改某些文件重启,建议配置一个控制文件,只有此文件修改才会重启. 1. pom中添加: & ...
- 【mysql】MySQL知识整理-死锁分析-性能优化等
[[TOC]] 常用操作指令 show databases:显示所有的数据库: use dbName: 使用指定数据库 show tables: 显示所有的数据表: desc tableName: 查 ...
- js中两个==和三个===的区别
首先,== equality 等同,=== identity 恒等. ==, 两边值类型不同的时候,要先进行类型转换,再比较. ==,不做类型转换,类型不同的一定不等. 下面分别说明: 先说 ===, ...
- Flink安装启动
1.下载安装包并解压 下载网址:https://flink.apache.org/ 版本选择可以根据安装的hadoop版本和Scala版本进行选择 我用的是:flink-1.3.3-bin-hadoo ...
- [转][html]设置IIS 默认页
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.we ...
- Zabbix 调整告警发送的内容格式
在配置动作区域 可以设置报警内容格式进行调整 原先告警内容 修改内容为: 后显示效果
- Java项目部署服务器操作
有 2个工具需要下载,我使用的是 xshell(操作Linux命令),xftp5(操作文件传输) 需要知道服务器 ip ,账号,密码 xshell连接时,协议选择SSH连接,其他正常输入. xftp5 ...
- [UE4]获得特定类型的所有Actor:Get All Actors Of Class、Get All Actors with Interface、Get All Actors with Tag
- 实现textview竖排文字效果
文字效果
- 关于在Intellij IDEA工具中配置热加载问题
第一步,创建一个maven项目,然后在pom.xml文件中添加依赖(上图内容). 第二步:来到intellij idea主页面,点击File->Settings->Build->co ...