本文为实现对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. 29-jsp中用js进行时间格式转化

    CST可以为如下4个不同的时区的缩写: 美国中部时间:Central Standard Time (USA) UT-6:00 澳大利亚中部时间:Central Standard Time (Austr ...

  2. php libev扩展使用

    在WorkerMan源码分析 - 实现最简单的原型文章中提到了libevent网络库,前者和libev都是事件驱动编程库高性能.简单说libev对libevent做了改进和精简.libevent使用全 ...

  3. ecplise自动提示失效,使用补全自动提示快捷键(Alt+/),但只显示“No Default Proposals”

    在这里设置了自动提示,但是在使用的时候自动提示实现了.甚至使用补全自动提示快捷键(Alt+/),只显示“No Default Proposals”.今天在网上搜索了一下结果,主要有一下几种方法: 1. ...

  4. (转)Android EditText限制输入字符的5种实现方式

    最近项目要求限制密码输入的字符类型, 例如不能输入中文.   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣. 第一种方式:  设置EditText的inputType属性,可以 ...

  5. PAT 1042 字符统计(20)(思路)

    1042 字符统计(20)(20 分) 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过1000的字符串.字符串由ASCII码表中任意可见字符及空格 ...

  6. OSGI引入Spring DM实现对服务对象的管理

    一.异同 熟悉Spring的应该也都了解它的IOC的功能,那么对于在OSGI开发环境下,在使用IOC功能时有什么不同呢?最重要的一点就是Spring上下文对象,每个Spring-Powered Bun ...

  7. js 中 的 if使用条件

    在javascript中,哪些值能作为if的条件呢 1.布尔变量true/false2.数字非0,非NaN/ (0 或NaN) 见下面的例子,莫以为负数就以为if语句为假了. 复制代码代码如下: va ...

  8. linux 使用笔记3

    解决linux下打开txt乱码问题 在Linux下要阅读windows生成的txt文件,需要通过iconv进行字符转化 iconv -f gb2312 -t utf8 ./读书笔记.txt > ...

  9. 各种平台的表达芯片跟mRNA-seq数据比较

    各种平台的表达芯片跟mRNA-seq数据比较 RNA-Seq 表达谱 芯片数据分析 文章见:http://journals.plos.org/plosone ... ournal.pone.00786 ...

  10. Linux安装及入门

    Linux安装及学习 Linux遇到的问题: 在安装过程中因为代码输错(少空格)而质疑自己下载的ubuntu和virtualbox版本,于是卸载之后重新安装了一次,后来才发现是代码输错了(教程中的空格 ...