欢迎大家互相交流学习。。。
jsch-0.1.51.jar下载地址:http://download.youkuaiyun.com/detail/daohaode123/8412375
package com.zjl;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Vector;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
/**
* @author zjl
*
*/
public class SFTPUtil {
/**
* @param host 主机IP
* @param port 主机端口号
* @param username 登录名
* @param password 登录密码
*
* @return sftp
*/
public ChannelSftp connect(String host, int port, String username, String password){
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
Session session = jsch.getSession(username, host, port);
session.setPassword(password);
Properties properties = new Properties();
properties.put("StrictHostKeyChecking", "no");
session.setConfig(properties);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
} catch (JSchException e) {
e.printStackTrace();
}
return sftp;
}
/**
* 列出目录下的文件
* @param directory 目录
* @param sftp
*
* @return fileNameList 文件名列表
* @throws Exception
*/
public List<String> listFiles(String directory, ChannelSftp sftp) throws Exception{
Vector fileList;
List<String> fileNameList = new ArrayList<String>();
fileList = sftp.ls(directory);
Iterator it = fileList.iterator();
while(it.hasNext()){
String fileName = ((LsEntry)it.next()).getFilename();
if(".".equals(fileName) || "..".equals(fileName)){
continue;
}
fileNameList.add(fileName);
}
return fileNameList;
}
/**
* 删除文件
* @param directory 目录
* @param deleteFile 删除的文件
*
*/
public void delete(String dieectory, String deleteFile, ChannelSftp sftp){
try {
sftp.cd(dieectory);
sftp.rm(deleteFile);
} catch (SftpException e) {
e.printStackTrace();
}
}
/**
* 下载目录下的全部文件
* @param directory 目录
* @param saveDirectory 存在本地的路径
* @param sftp
* @throws Exception
*
*/
public void downloadDirectory(String directory, String saveDirectory, ChannelSftp sftp) throws Exception{
String downloadFile = "";
List<String> downloadFileList;
downloadFileList = listFiles(directory,sftp);
Iterator<String> it = downloadFileList.iterator();
while(it.hasNext()){
downloadFile = it.next().toString();
if(downloadFile.toString().indexOf(".") < 0){
continue;
}
download(directory,downloadFile,saveDirectory,sftp);
}
}
/**
* 下载单个文件
* @param directory 下载目录
* @param downloadFile 下载的文件
* @param saveDirectory 保存的路径
* @param sftp
* @throws Exception
*/
public void download(String directory, String downloadFile, String saveDirectory, ChannelSftp sftp) throws Exception {
String saveFile = saveDirectory + "//" + downloadFile;
try {
sftp.cd(directory);
File file = new File(saveFile);
sftp.get(downloadFile, new FileOutputStream(file));
} catch (SftpException e) {
e.printStackTrace();
}
}
/**
* 上传目录下所有文件
* @param directory 上传的路径
* @param local 本地目录
*
*/
public void uploadDirectory(String directory, String local, ChannelSftp sftp) throws Exception{
String uploadFile = "";
List<String> uploadFileList;
uploadFileList = listFiles(local,sftp);
Iterator<String> it = uploadFileList.iterator();
while(it.hasNext()){
uploadFile = it.next().toString();
upload(directory,uploadFile,sftp);
}
}
/**
* 上传单个文件
*
* @param directory 上传的路径
* @param uploadFile 上传的文件
* @param sftp
* @throws Exception
*/
public void upload(String directory, String uploadFile, ChannelSftp sftp) throws Exception {
try {
sftp.cd(directory);
File file = new File(uploadFile);
sftp.put(new FileInputStream(file),file.getName());
} catch (SftpException e) {
e.printStackTrace();
}
}
}
652



被折叠的 条评论
为什么被折叠?



