(曾在天涯)的文章详细讲解了jsch中的函数以及用法
http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html
http://www.cnblogs.com/longyg/archive/2012/06/25/2561332.html
下面是一个例子:
package com.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import java.util.Vector;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.ChannelSftp.LsEntry;
public class Jsch4Sftp {
/**
* 连接sftp服务器
*
* @param host
* 主机
* @param port
* 端口
* @param username
* 用户名
* @param password
* 密码
* @return
*/
public ChannelSftp connect(String host, int port, String username,
String password) {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jsch.getSession(username, host, port);
Session sshSession = jsch.getSession(username, host, port);
System.out.println("Session created.");
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
System.out.println("Session connected.");
System.out.println("Opening Channel.");
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
// sshSession.disconnect();
System.out.println("Connected to " + host + ".");
} catch (Exception e) {
}
return sftp;
}
/**
* 上传文件
*
* @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);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 列出目录下的文件
*
* @param directory
* 要列出的目录
* @param sftp
* @return
* @throws SftpException
*/
public Vector<LsEntry> listFiles(String directory, ChannelSftp sftp)
throws SftpException {
return sftp.ls(directory);
}
public static void main(String[] args) {
Jsch4Sftp sf = new Jsch4Sftp();
String host = "***";
int port = 22;
String username = "***";
String password = "***";
String directory = "/home";
String saveFile = "1.zip";
String downLoadDirectory = "D:\\";
ChannelSftp sftp = null;
Session sshSession = null;
try {
JSch jsch = new JSch();
jsch.getSession(username, host, port);
sshSession = jsch.getSession(username, host, port);
System.out.println("Session created.");
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
System.out.println("Session connected.");
System.out.println("Opening Channel.");
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
System.out.println("Connected to " + host + ".");
// sf.upload(directory, uploadFile, sftp);
// sf.download(directory, downloadFile, saveFile, sftp);
// sf.delete(directory, deleteFile, sftp);
// sftp.cd(directory);
Vector<LsEntry> v = sf.listFiles(directory, sftp);
for (LsEntry e : v) {
if(!e.getFilename().startsWith(".")) {
saveFile = downLoadDirectory + e.getFilename();
sf.download(directory, e.getFilename(), saveFile, sftp);
}
}
System.out.println("finished");
} catch (Exception e) {
e.printStackTrace();
} finally {
sftp.exit();
sshSession.disconnect();
}
}}
相关推荐
JSch - Java实现的SFTP(文件上传详解篇)
ChannelSftp类是JSch实现SFTP的核心类,它封装了SFTP协议的所有操作方法。例如,put()用于文件上传,get()用于文件下载,cd()用于进入指定目录,ls()用于获取指定目录下的文件列表,rename()用于重命名文件等。利用...
Java使用JSCH库实现SFTP文件管理是一种常见的远程文件传输方式,特别适用于需要与服务器进行交互,例如上传、下载文件的场景。JSCH(Java Secure Channel)是一个纯Java实现的SSH2库,允许用户通过SSH协议连接到远程...
本篇文章将详细讲解如何利用JSCH库实现在Java程序中进行SFTP文件的上传与下载。 首先,我们需要在项目中引入JSCH的JAR包。`jsch.jar`包含了所有必要的类和方法,可以方便地在Java程序中进行SFTP操作。确保将这个JAR...
然后,就可以执行如执行远程命令、SFTP文件传输等操作。这样的集成使得Ant不仅仅是单纯的构建工具,还可以作为一个强大的远程系统管理工具。 总结一下,"ant-jsch-1.8.1.jar.zip"这个压缩包包含了一个整合了Jsch...
jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。
而JSch则是一个纯Java实现的SSH2库,它允许开发者连接到远程服务器进行文件传输、执行命令甚至建立隧道。本文将深入探讨Ant与JSch的集成以及`ant-jsch-1.6.jar.zip`这个压缩包的用途。 首先,`ant-jsch-1.6.jar`是...
本篇文章通过具体的代码示例详细介绍了如何使用JSch实现SFTP文件下载功能,并简要介绍了部分辅助方法。这些内容为Java开发者提供了实践指导,有助于他们更高效地完成文件传输任务。需要注意的是,在实际部署时还需...
本文将详细探讨如何使用JSch库在Java中实现SFTP文件的上传和下载。 首先,我们需要了解JSch的基本用法。在项目中引入JSch库后,我们可以通过创建`JSch`实例来初始化SSH连接。然后,我们需要获取会话(Session)并...
而JSCH(JSch)则是一个Java实现的SSH2库,允许用户进行安全的远程执行命令、文件传输、端口转发等功能。 标题“ant-jsch-1.6.4.jar.zip”表明这是Ant与JSCH的一个特定版本——1.6.4的集成包,其中包含了一个名为...
Java中可以使用JSch库来实现SFTP操作。JSch是一个纯Java实现的SSH2库,支持SFTP。使用JSch时,需要先建立SSH连接,然后打开一个SFTP会话。文件操作的接口封装在`ChannelSftp`类中。示例代码如下: ```java JSch ...
而JSch则是一个纯Java实现的SSH2库,可以用来连接远程服务器进行安全的文件传输、执行命令等功能。 标题"ant-jsch-1.6.2.jar.zip"暗示了这是一个将Ant与JSch整合的特定版本库,其中包含的是"ant-jsch-1.6.2.jar...
在Java编程环境中,有时...总的来说,`jsch.jar`和`SftpUtil.java`为Java开发者提供了一种简洁而强大的方式来实现SFTP文件传输。通过理解和使用这两个组件,你可以轻松地在Java应用程序中集成安全的远程文件操作功能。
通过调用`SftpUtil.uploadFile()`方法,可以轻松地实现SFTP文件上传。 总之,JSch库为Java开发者提供了一个强大的工具,使得与SFTP服务器交互变得简单而直观。结合`SftpUtil`工具类,可以方便地集成SFTP操作到Java...
在Java编程中,实现Secure File Transfer Protocol (SFTP) 功能是常见的需求,尤其是在处理远程文件操作时。本文将详细讲解如何使用开源库JSch来实现在Java中进行SFTP的上传、下载以及删除文件的方法。 JSch是一个...
总结,JSch是Java开发中实现SSH功能的重要工具,它简化了SSH连接和相关操作的实现,为开发者提供了强大而灵活的功能。无论是监控Linux设备的shell,还是进行安全的文件传输,JSch都能胜任。通过深入理解和熟练使用...
JAVA SFTP文件上传、下载及批量下载实例 ...本篇文章主要介绍了JAVA SFTP文件上传、下载及批量下载的实例,包括JSch库的使用、SFTP的基本概念、代码实现等方面的内容。希望本篇文章能够为您提供一定的参考价值。
而JSch则是一个纯Java实现的SSH2库,它允许Java应用程序连接到远程服务器,执行SFTP(Secure File Transfer Protocol)操作,如文件传输、端口转发、远程命令执行等。当这两个库结合在一起时,开发者可以方便地将...
JSch(Java Secure Channel)是一个开源的Java库,它实现了SSH(Secure SHell)协议,允许Java应用程序进行安全的远程登录、文件传输和其他与SSH相关的操作。在本文中,我们将深入探讨JSch库的核心功能,以及如何...