本文为实现对linux服务器文件的操作。windows服务器不支持。



引入jar包:jsch-0.1.42.jar

package com.csvreader.sftp;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Properties;
import java.util.Vector; import org.junit.Test; 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 SftpUtil {
/**
*
* @param host
* @param port
* @param username
* @param password
* @return
* @throws JSchException
*/
public ChannelSftp connect(String host, int port, String username,String password) throws JSchException {
// 1.声明连接Sftp的通道
ChannelSftp nChannelSftp = null;
// 2.实例化JSch
JSch nJSch = new JSch();
// 3.获取session
Session nSShSession = nJSch.getSession(username, host, port);
System.out.println("Session创建成功");
// 4.设置密码
nSShSession.setPassword(password);
// 5.实例化Properties
Properties nSSHConfig = new Properties();
// 6.设置配置信息
nSSHConfig.put("StrictHostKeyChecking", "no");
// 7.session中设置配置信息
nSShSession.setConfig(nSSHConfig);
// 8.session连接
nSShSession.connect();
System.out.println("Session已连接");
// 9.打开sftp通道
Channel channel = nSShSession.openChannel("sftp");
// 10.开始连接
channel.connect();
nChannelSftp = (ChannelSftp) channel;
System.out.println("连接到主机" + host + ".");
return nChannelSftp;
} /**
* 文件重命名
* @param directory
* @param oldname
* @param newname
* @param sftp
*/
public void renameFile(String directory, String oldname, String newname,ChannelSftp sftp) {
try {
sftp.cd(directory);
sftp.rename(oldname, newname);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 上传文件
* @param directory
* @param uploadFile
* @param sftp
*/
public void upload(String directory, String uploadFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file = new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 下载文件
* @param directory
* @param downloadFile
* @param saveFile
* @param sftp
*/
public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file = new File(saveFile);
sftp.get(downloadFile, new FileOutputStream(file)); } catch (Exception e) {
e.printStackTrace();
}
} /**
* 删除文件
* @param directory
* @param deleteFile
* @param sftp
*/
public void delete(String directory, String deleteFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
sftp.rm(deleteFile);
System.out.println("删除成功");
} catch (Exception e) {
System.out.println("删除失败");
e.printStackTrace();
}
} /**
* 列出列表下的文件
* @param directory
* @param sftp
* @return
* @throws SftpException
*/
public Vector listFiles(String directory, ChannelSftp sftp)throws SftpException {
return sftp.ls(directory);
} /**
* 下载文件夹下面的所有文件
*
* @param viDirectory 文件夹
* @param viHost 主机名
* @param viPort 端口号
* @param viUserName 用户名
* @param viPassWord 用户密码
* @param viSaveDir 保存路径
* @return
*/
@Test
public List<String> downloadDirFile(String viDirectory, String viHost,int viPort, String viUserName, String viPassWord, String viSaveDir) {
ChannelSftp nChannelSftp = null;
List<String> nFileNameList = null;
try {
// 1.实例化nSftpUtil工具类
SftpUtil nSftpUtil = new SftpUtil();
// 2.建立Sftp通道
nChannelSftp = nSftpUtil.connect(viHost, 22, viUserName, viPassWord);
// 3.获取目录下面所有文件
Vector nVector = nChannelSftp.ls(viDirectory);
// 4.循环遍历文件
for (int i = 0; i < nVector.size(); i++) {
// 5.进入服务器文件夹
nChannelSftp.cd(viDirectory);
// 6.实例化文件对象
String nFileName = nVector.get(i).toString().substring(56, nVector.get(i).toString().length());
if (!nFileName.contains("csv")) {
continue;
}
File nFile = new File(viSaveDir + File.separator + nFileName);
// 7.下载文件
nChannelSftp.get(nFileName, new FileOutputStream(nFile));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
nChannelSftp.disconnect();
}
return nFileNameList;
}

附件附jar包

通过sftp操作Linux服务器上的文件(java)的更多相关文章

  1. 如何使用sftp下载Linux服务器上的文件到本地

    下载Linux服务器上的文件到本地 Linux服务器上的操作 sftp xxxxx@jumper.xxxx.com 使用put命令进行文件上传,put app.log 本地操作 sftp xxxxx@ ...

  2. Sublime Text编辑远程Linux服务器上的文件

    sublime有个叫sftp的插件,可以通过它直接打开远程机器上的文件进行编辑,并在保存后直接同步到远程linux服务器上. 用Package Control安装插件 按下Ctrl+Shift+P调出 ...

  3. 使用PhpStrom等IDE编辑 远程linux服务器上的文件 实时更新

    习惯了在linux上 vim进行PHP的开发,突然忘了IDE的感觉,所以想到了.通过PhpStrom等IDE直接编辑 samba共享到 mac或者windows本地的磁盘进行编辑. 为了忘却的纪念,有 ...

  4. python 读取Linux服务器上的文件

    使用Python语句,读取Linux远端服务器上的文件打印到控制台的代码实现: 下载包:paramiko import paramiko #服务器信息,主机名(IP地址).端口号.用户名及密码 hos ...

  5. java使用JSCH连接FTP(Linux服务器)上传文件到Linux服务器

    首先需要用到jsch-0.1.54.jar 包: 链接: https://pan.baidu.com/s/1kZR6MqwpCYht9Pp_D6NKQw 密码: gywx 直接上代码: package ...

  6. 通过SecureCRT下载远程Linux服务器上的文件到本地Windows

    sz  文件名[先cd到需要下载的文件的目录层] [root@is13084905-0233 bookinterface]# sz test.txt rz Starting zmodem transf ...

  7. linux 将一个服务器上的文件或者文件夹复制到另一台服务器上

    使用scp将一个Linux系统中的文件或文件夹复制到另一台Linux服务器上 复制文件或文件夹(目录)命令:  一.复制文件:  (1)将本地文件拷贝到远程  scp 文件名 用户名@计算机IP或者计 ...

  8. [转]linux将一个服务器上的文件或者文件夹复制到另一台服务器上

    本文转载自<linux 将一个服务器上的文件或者文件夹复制到另一台服务器上>,有时间实践一把 使用scp将一个Linux系统中的文件或文件夹复制到另一台Linux服务器上 复制文件或文件夹 ...

  9. 从window 的cmd窗口中下载linux 服务器上文件

    下载linux 服务器上的文件 down.php 格式为  pscp linux服务器上用户名@linux 服务器ip  文件在windows系统上的绝对路径 如果是下载服务器上的某个目录,只要在ps ...

随机推荐

  1. linux命令学习之:top

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不 ...

  2. git查看历史操作

    在提交了若干更新,又或者克隆了某个项目之后,偶尔想回顾下过往提交历史.可以使用git log命令来实现. 最简单的查看提交历史命令如下: $ git log $ git log --oneline $ ...

  3. Web API中常用Filter的执行顺序举例讲解

    在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...

  4. 有关Oracle统计信息的知识点[z]

    https://www.cnblogs.com/sunmengbbm/p/5775211.html 一.什么是统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.例如, ...

  5. VS新建API控制器时提示“运行所选代码生成器时出错”

    使用Nuget安装microsoft.entityframeworkcore.tools这个包就行了,安装时注意版本. 根据下图提示应该是新建控制器时用到了这个包,所以安装一下就好了.之前遇到过一次, ...

  6. hdu 1541 (基本树状数组) Stars

    题目http://acm.hdu.edu.cn/showproblem.php?pid=1541 n个星星的坐标,问在某个点左边(横坐标和纵坐标不大于该点)的点的个数有多少个,输出n行,每行有一个数字 ...

  7. hdu 1257 && hdu 1789(简单DP或贪心)

    第一题;http://acm.hdu.edu.cn/showproblem.php?pid=1257 贪心与dp傻傻分不清楚,把每一个系统的最小值存起来比较 #include<cstdio> ...

  8. Squid 搭建正向代理服务器

    Squid 是一款缓存代理服务器软件,广泛用于网站的负载均衡架构中,常见的缓存服务器还有varnish.ATS等. 正向代理服务器可满足内网仅有一台服务器可以上网,而要供内网所有机器上网的需求,也可以 ...

  9. eclipse自动添加javadoc注释

    参考文档: https://jingyan.baidu.com/article/36d6ed1f70ea9c1bce488350.html https://www.cnblogs.com/yangji ...

  10. Ubuntu下安装VS code

    sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubun ...