ssh2java传输文件_java SSH2Ftp 上传 下载 多个文件

这几天想写个上传下载的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;     } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值