首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java程序兑现对sftp服务器的操作

2012-08-21 
java程序实现对sftp服务器的操作在这里介绍对sftp操作的一种java框架:JSch-Java Secure Channel,官方地址

java程序实现对sftp服务器的操作

在这里介绍对sftp操作的一种java框架:JSch-Java Secure Channel,官方地址是:http://www.jcraft.com/jsch/

具体使用方法请看下面代码:

package jsch;import java.io.File;import java.io.FileInputStream;import java.util.Properties;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;public class Test {protected String host;//sftp服务器ipprotected String username;//用户名protected String password;//密码protected String privateKey;//密钥文件路径protected String passphrase;//密钥口令protected int port = 22;//默认的sftp端口号是22/** * 获取连接 * @return channel */public ChannelSftp connectSFTP() {JSch jsch = new JSch();Channel channel = null;try {if (privateKey != null && !"".equals(privateKey)) {//使用密钥验证方式,密钥可以使有口令的密钥,也可以是没有口令的密钥if (passphrase != null && "".equals(passphrase)) {jsch.addIdentity(privateKey, passphrase);} else {jsch.addIdentity(privateKey);}}Session session = jsch.getSession(username, host, port);if (password != null && !"".equals(password)) {session.setPassword(password);}Properties sshConfig = new Properties();sshConfig.put("StrictHostKeyChecking", "no");// do not verify host keysession.setConfig(sshConfig);// session.setTimeout(timeout);session.setServerAliveInterval(92000);session.connect();//参数sftp指明要打开的连接是sftp连接channel = session.openChannel("sftp");channel.connect();} catch (JSchException e) {e.printStackTrace();}return (ChannelSftp) channel;}/** * 上传文件 *  * @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);sftp.get(downloadFile,saveFile);} 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();}}public void disconnected(ChannelSftp sftp){if (sftp != null) {try {sftp.getSession().disconnect();} catch (JSchException e) {e.printStackTrace();}sftp.disconnect();}}}

?


在jsch自带的例子中,有一个可以根据密钥生成公钥的类,叫做UserAuthPubKey.java, 且带有图形界面。有用到的可以自己试试。

?

热点排行