本文为实现对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-ubuntu 安装配置Redis

    >wget http://download.redis.io/releases/redis-3.2.6.tar.gz #下载redis源码包 >tar -zxvf redis-3.2.6. ...

  2. eval详解

    eval()的作用 把字符串参数解析成js代码并运行,并返回执行的结果: eval的作用域 作用域在它所有的范围内容有效 IE8及以下指向window 解决方法: functiona(){ if(wi ...

  3. Windows 获取unix timestamp

    #include <stdio.h> #include <time.h> int main(){ SYSTEMTIME lpSysTime; GetLocalTime(& ...

  4. Jmeter常用脚本开发之Beanshell Sampler

    Beanshell Sampler Beanshell介绍:是一种完全符合java语法规范的脚本语言,且又拥有自己的一些语法和方法:是一种松散类型的脚本语言:它执行标准java语句和表达式,另外它还包 ...

  5. Oracle_PL/SQL(10) 定时器job

    定时器job1.定义 定时器指在特定的时间执行特定的操作. 可以多次执行.说明:特定的操作:指一个完成特定功能的存储过程.多次执行:指可以每分钟.每小时.每天.每周.每月.每季度.每年等周期性的运行. ...

  6. win7系统 无线上网卡 共享网络,设置成wifi热点

    给家人买了一个新的智能手机,用的移动神州行套餐,没有开通3G,想更新一些应用软件,于是想到能不能用电脑上的无线上网卡. 在网上找到了一方法,试了一下,还真是可以. 步骤如下: 用无线上网卡拨号上网,并 ...

  7. andorid 对话框

    activity_ui2.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  8. IDEA 的 Edit 设置

    1.设置鼠标悬浮提示 General -- Show quick documentation on mouse move 2.自动导包 3.设置显示行号和方法的间隔符 4.忽略大小写  4.设置取消单 ...

  9. POJ1236或洛谷2746或洛谷2812 Network of Schools

    POJ原题链接 洛谷2746原题链接 洛谷2812(加强版)原题链接 显然在强连通分量里的所有学校都能通过网络得到软件,所以我们可以用\(tarjan\)求出强连通分量并缩点,统计缩点后每个点的入度和 ...

  10. java中 this 关键字的三种用法

    Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...