java sftp判断目录是否存在
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();
- }
- }
- }
java sftp判断目录是否存在的更多相关文章
- JAVA SFTP文件上传、下载及批量下载
JavaJsch 1.jsch官方API查看地址(附件为需要的jar) http://www.jcraft.com/jsch/ 2.jsch简介 JSch(Java Secure Channel)是 ...
- JAVA Sftp 上传下载
SftpUtils package xxx;import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com ...
- Eclipse JAVA项目的 目录结构 和 导入
说明:本文所有测试以java工程为例: 1. Eclipse下的java工程目录 eclipse的基本工程目录叫做workspace,每个运行时的eclipse实例只能对应一个workspace,也就 ...
- Java命名和目录接口——JNDI
JNDI即Java命名和目录接口(JavaNaming and Directory Interface),它属于J2EE规范范畴,是J2EE的核心技术之一,提供了一组接口.类和关于命名空间的概念.JD ...
- Java如何判断文件或者文件夹是否在?不存在如何创建?
Java如何判断文件或者文件夹是否在?不存在如何创建? 1. 首先明确一点的是:test.txt文件可以和test文件夹同时存在同一目录下:test文件不能和test文件夹同时存在同一目录下. 原 ...
- Java遍历一个目录下的所有文件
Java遍历一个目录下的所有文件 Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其他流类不同的是,流类关心的是文件的内容,而File类关心的是磁盘上文件的存 ...
- java代码实现目录结构
今天用java代码来实现.像我们电脑盘符那样的目录结构.在代码开始之前首先.介绍一下.用.java代码实现目录的思想. 第一步:完成基础的.大家想.我们是如何获取文件的.是不是用File类,直接就获取 ...
- Java SFTP 上传、下载等操作
Java SFTP 上传.下载等操作 实际开发中用到了 SFTP 用于交换批量数据文件,然后琢磨了下这方面的东西,基于 JSch 写了个工具类记录下,便于日后使用. JSch是 SSH2 的纯Java ...
- 深入Java虚拟机--判断对象存活状态
程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点 ...
随机推荐
- org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.NumberFormatException: For input string: "W%" ### Cause: java.lang.NumberFormatException: For input s
一个常见的myBatis xml文件中的引号错误: org.apache.ibatis.exceptions.PersistenceException: ### Error querying data ...
- java_第一年_JavaWeb(11)
自定义标签:主要是用来移除JSP页面中的java代码. 先从一个简单的案例了解其怎么移除代码: 一个正常的jsp页面: <%@ page language="java" pa ...
- 在react中用装饰器来装饰connect
假设我们在react中有如下header组件: import React, { PureComponent } from 'react'; import { connect } from 'react ...
- 经典的最大流题POJ1273(网络流裸题)
http://poj.org/problem?id=1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Subm ...
- mysql的sql语句优化方法面试题总结
mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结 ...
- XMLHttpRequest.setRequestHeader()
在AJAX中,如果需要像 HTML 表单那样 POST 数据,需要使用 setRequestHeader() 方法来添加 HTTP 头. 然后在 send() 方法中规定需要希望发送的数据: setR ...
- jsp页面随页面初始化加载js函数
1 <%@ page language="java" import="java.util.*" pageEncoding="gbk"% ...
- AI-sklearn 学习笔记(一)sklearn 一般概念
scikit-learn Machine Learning in Python Simple and efficient tools for data mining and data analysis ...
- .NET File 多图上传
HTML代码: <div> <div> <input type="file" style="display:none" id=&q ...
- springboot集成hibernate
package com.jxd.Boot.hibernate.dao.impl; import java.util.List; import javax.persistence.EntityManag ...