java sftp判断目录是否存在
public boolean isExistDir(String path,ChannelSftp sftp){ boolean isExist=false; try { SftpATTRS sftpATTRS = sftp.lstat(path); isExist = true; return sftpATTRS.isDir(); } catch (Exception e) { if (e.getMessage().toLowerCase().equals("no such file")) { isExist = false; } } return isExist; }
完整sftpUtil.class
package com.iot.crm.common.util; import com.jcraft.jsch.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; import java.util.Properties; public class SftpUtils { final Logger logger = LoggerFactory.getLogger(SftpUtils.class); protected String host; protected int port; protected String username; protected String password; Session sshSession = null ; /** * @param host ip * @param port 端口 * @param username 账号 * @param password 密码 */ public SftpUtils(String host, int port, String username, String password) { set(host, port, username, password); } public void set(String host, int port, String username, String password) { this.host = host; this.port = port; this.username = username; this.password = password; } public Session getSession() { //Session sshSession = null; try { JSch jsch = new JSch(); jsch.getSession(this.username, this.host, this.port); sshSession = jsch.getSession(this.username, this.host, this.port); System.out.println("Session created."); sshSession.setPassword(this.password); Properties sshConfig = new Properties(); sshConfig.put("StrictHostKeyChecking", "no"); sshSession.setConfig(sshConfig); sshSession.connect(); System.out.println("Session connected."); System.out.println("Opening Channel."); } catch (Exception e) { e.printStackTrace(); } return sshSession; } /** /** * 链接linux */ public ChannelSftp connectSftp() { getSession(); ChannelSftp sftp = null; try { System.out.println("Session connected."); System.out.println("Opening Channel."); Channel channel = sshSession.openChannel("sftp"); channel.connect(); sftp = (ChannelSftp) channel; } catch (Exception e) { e.printStackTrace(); sftp = null; } return sftp; } public void exec(Session session,String command) { ChannelExec channelExec = null; try { System.out.println("Session connected."); System.out.println("Opening Channel."); Channel channel = session.openChannel("exec"); channelExec = (ChannelExec) channel; channelExec.setCommand(command); channelExec.connect(); channelExec.setInputStream(null); InputStream in = channelExec.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String buf = null; while ((buf = reader.readLine()) != null) { System.out.println(buf); } reader.close(); } catch (Exception e) { e.printStackTrace(); channelExec = null; }finally { channelExec.disconnect(); } } /** * linux上传文件 */ public void upload(String directory, File file) { ChannelSftp sftp = connectSftp(); try { if (null != sftp) { sftp.cd(directory); logger.info("cd {}", directory); FileInputStream stream = new FileInputStream(file); try { sftp.put(stream, file.getName()); } catch (Exception e) { logger.error("upload error", e); } finally { stream.close(); } } } catch (Exception e) { logger.error("upload:" + host, e); } finally { if (sftp != null) { sftp.disconnect(); sftp.exit(); } sshSession.disconnect(); } } /** * linux下载文件 */ public void get(String remotePath,String remoteFilename,String localFileName) { ChannelSftp sftp = connectSftp(); File file=null; OutputStream output=null; try { if (null != sftp) { file = new File(localFileName); if (file.exists()){ file.delete(); } file.createNewFile(); sftp.cd(remotePath); output=new FileOutputStream(file); try { logger.info("Start download file:{},the arm file name:{}",remotePath+remoteFilename,localFileName); sftp.get(remoteFilename, output); logger.info("down {} suc", remotePath+remoteFilename); } catch (Exception e) { logger.error("download error", e); } finally { output.close(); } } } catch (Exception e) { logger.error("down error :" , e); } finally { close(sftp); } } protected void close(ChannelSftp sftp) { if (sftp != null) { sftp.disconnect(); sftp.exit(); } if (sshSession != null) { sshSession.disconnect(); } } }