SFTP上传文件
package com.iekun.ef.util; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; 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; public class SftpFactory { public static void main(String[] args) { } private SftpFactory(){} public static void sshSftp(String ip, String user, String psw, int port, String sPath, String dPath) { Session session = null; JSch jsch = new JSch(); try { if (port <= 0) { session = jsch.getSession(user, ip); } else { session = jsch.getSession(user, ip, port); } if (session == null) { throw new Exception("session is null"); } session.setPassword(psw); session.setConfig("StrictHostKeyChecking", "no"); session.connect(3000); UpLoadFile.upLoadFile(session, sPath, dPath); } catch (Exception e) { e.printStackTrace(); } System.out.println("uploading success!"); } } class UpLoadFile { public static void upLoadFile(Session session, String sPath, String dPath) { Channel channel = null; try { channel = (Channel) session.openChannel("sftp"); channel.connect(10000000); ChannelSftp sftp = (ChannelSftp) channel; try { sftp.cd(dPath); } catch (SftpException e) { sftp.mkdir(dPath); sftp.cd(dPath); } File file = new File(sPath); copyFile(sftp, file, sftp.pwd()); } catch (Exception e) { e.printStackTrace(); } finally { session.disconnect(); channel.disconnect(); } } public static void copyFile(ChannelSftp sftp, File file, String pwd) { if (file.isDirectory()) { File[] list = file.listFiles(); try { try { String fileName = file.getName(); sftp.cd(pwd); sftp.mkdir(fileName); System.out.println("create directory:" + sftp.pwd() + "/" + fileName); } catch (Exception e) { } pwd = pwd + "/" + file.getName(); try { sftp.cd(file.getName()); } catch (SftpException e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } for (int i = 0; i < list.length; i++) { copyFile(sftp, list[i], pwd); } } else { try { sftp.cd(pwd); } catch (SftpException e1) { e1.printStackTrace(); } System.out.println("copy file :" + file.getAbsolutePath()); InputStream instream = null; OutputStream outstream = null; try { outstream = sftp.put(file.getName()); instream = new FileInputStream(file); byte b[] = new byte[1024]; int n; try { while ((n = instream.read(b)) != -1) { outstream.write(b, 0, n); } } catch (Exception e) { e.printStackTrace(); } } catch (SftpException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { outstream.flush(); outstream.close(); instream.close(); } catch (Exception e2) { e2.printStackTrace(); } } } } }