java SSH2Ftp 上传 下载 多个文件
来源:互联网 发布:交大慧谷 seo 编辑:程序博客网 时间:2024/05/21 21:43
这几天想写个上传下载的java工具,在网上找了半天都不太好用。
自己整了个小代码,可以上传下载多个文件。路径用“\\”指定。
需要jsch-0.1.8.jar
package jp.co.nri.kinshasa.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.StringTokenizer;
import java.util.Vector;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.UserInfo;
public class Ssh2Util {
private static ArrayList filelist;
private String host;
private String user;
private String password;
private int port;
private Session session;
private File[] listFiles;
public Ssh2Util(String host, String user, String password, int port) {
this.host = host;
this.user = user;
this.password = password;
this.port = port;
}
public void initialSession() throws Exception {
if (session == null) {
JSch jsch = new JSch();
session = jsch.getSession(user, host, port);
session.setUserInfo(new UserInfo() {
public String getPassphrase() {
return null;
}
public String getPassword() {
return null;
}
public boolean promptPassword(String arg0) {
return false;
}
public boolean promptPassphrase(String arg0) {
return false;
}
public boolean promptYesNo(String arg0) {
return true;
}
public void showMessage(String arg0) {
}
});
session.setPassword(password);
session.connect();
}
}
/**
* 关闭连接
*
* @throws Exception
*/
public void close() throws Exception {
if (session != null && session.isConnected()) {
session.disconnect();
session = null;
}
}
public void putFile2(String localPath, String localFile, String remotePath,ChannelSftp c)
throws Exception {
c.put(localPath+"\\"+localFile, remotePath);
}
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();
}
}
public void getFile(String directory, String downloadFile, String saveFile,
ChannelSftp sftp) throws SftpException {
sftp.get(directory + "/" + downloadFile, saveFile);
}
public void dirPath(String directory, String downloadFile, String saveFile,
ChannelSftp sftp) throws SftpException {
Vector v = sftp.ls(directory);
for (Iterator iterator = v.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
System.out.println(isDirectoryName(object.toString()));
System.out.println(getLastTokenName(object.toString()));
}
}
public String getLastTokenName(String str) throws SftpException {
String directoryName=null;
// ArrayList tokenList=new ArrayList();
StringTokenizer st=new StringTokenizer(str," ");
while(st.hasMoreTokens()){
// System.out.println(st.nextToken());
directoryName=st.nextToken();
// tokenList.add(st.nextToken());
}
return directoryName ;
}
public boolean isDirectoryName(String str) throws SftpException {
if(str.startsWith("d")){
return true;
}
return false;
}
public void downloadFiles(String remoteDirectory, String localDirectory ) throws Exception{
initialSession();
Channel channelSftp = getSession().openChannel("sftp");
channelSftp.connect();
ChannelSftp sftp= (ChannelSftp) channelSftp;
Vector v = sftp.ls(remoteDirectory);
String str;
for (Iterator iterator = v.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
str=getLastTokenName(object.toString());
if((!str.equals("."))&&(!str.equals(".."))){
if(isDirectoryName(object.toString())){
File file=new File(localDirectory+"/"+str);
file.mkdir();
downloadFiles(remoteDirectory+"/"+str,localDirectory+"/"+str);
}else{
getFile(remoteDirectory, str, localDirectory, sftp);
System.out.println(object.toString());
}
}
}
channelSftp.disconnect();
}
public void uploadFiles2( String localDirectory ,String remoteDirectory) throws Exception{
initialSession();
Channel channelSftp = getSession().openChannel("sftp");
channelSftp.connect();
ChannelSftp sftp= (ChannelSftp) channelSftp;
File file=new File(localDirectory);
listFiles = file.listFiles();
for (File f : listFiles) {
System.out.println(f.getName());
if(f.isDirectory()){
uploadFiles2(localDirectory+"\\"+f.getName() , remoteDirectory+"/"+f.getName());
}else{
putFile2(localDirectory,f.getName(), remoteDirectory,sftp);
}
}
channelSftp.disconnect();
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
}
- java SSH2Ftp 上传 下载 多个文件
- java上传多个文件
- java文件上传、下载
- FileUpload框架实现文件上传(多个文件)和下载
- java web 多文件上传和下载
- java 多个文件上传 spring mvc
- java 单个或多个文件上传
- struts2上传多个文件,下载 配制!代码
- 如何在sharepoint上上传和下载多个文件
- Struts2的多个文件上传和下载
- javeScript 单个(多个)文件的上传与下载
- JAVA 文件上传与下载
- JAVA 文件上传与下载
- JAVA上传批量下载文件
- java--文件上传于下载
- java文件上传和下载
- Java文件上传与下载
- JAVA文件上传和下载
- 《Cocoa设计模式》读书笔记(2)
- 用Mozilla Firefox浏览器登陆Oracle EBS 11i (Oracle电子商务套件)的方法.
- 非BMP TIF格式图片上传 屏幕显示该图片
- 股市低迷或是FB IPO延期的真正原因
- SPGroup 和SPUser的常用操作
- java SSH2Ftp 上传 下载 多个文件
- 关于TreeSet的排序问题
- iOS 检测有没有安装其它应用
- java打开文件(Windows exe,应用文件exe,以及其他任何格式的文件)
- JAVA自动更新程序
- Web App和Native App 谁将是未来
- 常见内存错误
- Elastix 2.3 手机卡接入出现主叫unknow和呼入时等待时长较长后出现语音提示
- Java获取本地IP地址