Java 类com.jcraft.jsch.SftpATTRS 实例源码

项目:aos-FileCoreLibrary    文件:SftpFileEditor.java   
@Override
public boolean exists() {
    Channel channel = null;
    try {
        channel = SFTPSession.getInstance().getSFTPChannel(mUri);
        SftpATTRS attrs =  ((ChannelSftp)channel).stat(mUri.getPath());
        channel.disconnect();
        return attrs !=null;
    } catch (Exception e) {
        if(channel!=null&&channel.isConnected())
            channel.disconnect();
        e.printStackTrace();
    }finally {
        if(channel!=null&&channel.isConnected())
            channel.disconnect();
    }
    return false;
}
项目:incubator-netbeans    文件:SftpSupport.java   
private StatInfo createStatInfo(String dirName, String baseName, SftpATTRS attrs, ChannelSftp cftp) throws SftpException {
    String linkTarget = null;
    if (attrs.isLink()) {
        String path = dirName + '/' + baseName;
        RemoteStatistics.ActivityID activityID = RemoteStatistics.startChannelActivity("readlink", path); // NOI18N
        try {
            if (LOG.isLoggable(Level.FINE)) {
                LOG.log(Level.FINE, "performing readlink {0}", path);
            }
            linkTarget = cftp.readlink(path);
        } finally {
            RemoteStatistics.stopChannelActivity(activityID);
        }
    }
    Date lastModified = new Date(attrs.getMTime() * 1000L);
    StatInfo result = new FileInfoProvider.StatInfo(baseName, attrs.getUId(), attrs.getGId(), attrs.getSize(),
            attrs.isDir(), attrs.isLink(), linkTarget, attrs.getPermissions(), lastModified);
    return result;
}
项目:keepass2android    文件:SftpStorage.java   
@Override
public FileEntry getFileEntry(String filename) throws Exception {

    ChannelSftp c = init(filename);
    try {
        FileEntry fileEntry = new FileEntry();
        String sessionPath = extractSessionPath(filename);
        SftpATTRS attr = c.stat(sessionPath);
        setFromAttrs(fileEntry, attr);
        fileEntry.path = filename;
        fileEntry.displayName = getFilename(sessionPath);
        tryDisconnect(c);
        return fileEntry;
    } catch (Exception e) {
        logDebug("Exception in getFileEntry! " + e);
        tryDisconnect(c);
        throw convertException(e);
    }
}
项目:hadoop-oss    文件:SFTPFileSystem.java   
/**
 * Convert the file information in LsEntry to a {@link FileStatus} object. *
 *
 * @param sftpFile
 * @param parentPath
 * @return file status
 * @throws IOException
 */
private FileStatus getFileStatus(ChannelSftp channel, LsEntry sftpFile,
    Path parentPath) throws IOException {

  SftpATTRS attr = sftpFile.getAttrs();
  long length = attr.getSize();
  boolean isDir = attr.isDir();
  boolean isLink = attr.isLink();
  if (isLink) {
    String link = parentPath.toUri().getPath() + "/" + sftpFile.getFilename();
    try {
      link = channel.realpath(link);

      Path linkParent = new Path("/", link);

      FileStatus fstat = getFileStatus(channel, linkParent);
      isDir = fstat.isDirectory();
      length = fstat.getLen();
    } catch (Exception e) {
      throw new IOException(e);
    }
  }
  int blockReplication = 1;
  // Using default block size since there is no way in SFTP channel to know of
  // block sizes on server. The assumption could be less than ideal.
  long blockSize = DEFAULT_BLOCK_SIZE;
  long modTime = attr.getMTime() * 1000; // convert to milliseconds
  long accessTime = 0;
  FsPermission permission = getPermissions(sftpFile);
  // not be able to get the real user group name, just use the user and group
  // id
  String user = Integer.toString(attr.getUId());
  String group = Integer.toString(attr.getGId());
  Path filePath = new Path(parentPath, sftpFile.getFilename());

  return new FileStatus(length, isDir, blockReplication, blockSize, modTime,
      accessTime, permission, user, group, filePath.makeQualified(
          this.getUri(), this.getWorkingDirectory()));
}
项目:aos-FileCoreLibrary    文件:SFTPFile2.java   
public SFTPFile2(SftpATTRS stat, String filename, Uri uri) {
    if (filename == null){
        throw new IllegalArgumentException("filename cannot be null");
    }
    if (uri == null) {
        throw new IllegalArgumentException("uri cannot be null");
    }

    mUriString = uri.toString();
    mName = filename;
    mIsDirectory = stat.isDir();
    mIsFile = !stat.isDir();
    mLastModified = stat.getMTime();
    //TODO : permissions
    mCanRead = true;
    mCanWrite = true;
    mLength = stat.getSize();
}
项目:encdroidMC    文件:FileProvider6.java   
private EncFSFileInfo LsEntry2EncFSFileInfo(String parentPath, LsEntry file){
    EncFSFileInfo result;
    try {
        String name = file.getFilename();

        SftpATTRS attrs = file.getAttrs();
           long mtime = attrs.getMTime();       
           boolean isDir = attrs.isDir();
           long length = attrs.getSize();
        String relativePath=this.getRelativePathFromAbsolutePath(parentPath);



        if (name.endsWith("/")) name=name.substring(0,name.length()-1);
        result = new EncFSFileInfo(name,relativePath,isDir,mtime,length,true,true,true);

    } catch (Exception e){
        throw new RuntimeException(e);
    }

    return result;
}
项目:KeePass2Android    文件:SftpStorage.java   
@Override
public FileEntry getFileEntry(String filename) throws Exception {

    ChannelSftp c = init(filename);
    try {
        FileEntry fileEntry = new FileEntry();
        String sessionPath = extractSessionPath(filename);
        SftpATTRS attr = c.stat(sessionPath);
        setFromAttrs(fileEntry, attr);
        fileEntry.path = filename;
        fileEntry.displayName = getFilename(sessionPath);
        tryDisconnect(c);
        return fileEntry;
    } catch (Exception e) {
        logDebug("Exception in getFileEntry! " + e);
        tryDisconnect(c);
        throw convertException(e);
    }
}
项目:beyondj    文件:SftpRemoteFileSystem.java   
public boolean exists(String filename) throws FileSystemException {
    // we have to be connected
    if (channel == null) {
        throw new FileSystemException("Not yet connected to SFTP server");
    }

    // easiest way to check if a file already exists is to do a file stat
    // this method will error out if the remote file does not exist!
    try {
        SftpATTRS attrs = channel.stat(filename);
        // if we get here, then file exists
        return true;
    } catch (SftpException e) {
        // map "no file" message to return correct result
        if (e.getMessage().toLowerCase().indexOf("no such file") >= 0) {
            return false;
        }
        // otherwise, this means an underlying error occurred
        throw new FileSystemException("Underlying error with SFTP session while checking if file exists", e);
    }
}
项目:xnx3    文件:SFTPUtil.java   
private List<FileBean> _buildFiles(Vector ls,String dir) throws Exception {  
    if (ls != null && ls.size() >= 0) {  
        List<FileBean> list = new ArrayList<FileBean>();
        for (int i = 0; i < ls.size(); i++) {  
            LsEntry f = (LsEntry) ls.get(i);  
            String nm = f.getFilename();  

            if (nm.equals(".") || nm.equals(".."))  
                continue;  
            SftpATTRS attr = f.getAttrs();  
            FileBean fileBean=new FileBean();
            if (attr.isDir()) {  
                fileBean.setDir(true);
            } else {  
                fileBean.setDir(false);
            }  
            fileBean.setAttrs(attr);
            fileBean.setFilePath(dir);
            fileBean.setFileName(nm);
            list.add(fileBean);  
        }  
        return list;  
    }  
    return null;  
}
项目:spring-boot    文件:SftpConnection.java   
/**
     * Determines whether a directory exists or not
     * 如果是文件,也会抛出异常,返回 false
     *
     * @param remoteDirectoryPath
     * @return true if exists, false otherwise
     * @throws IOException thrown if any I/O error occurred.
     */
    @Override
    public boolean existsDirectory(String remoteDirectoryPath) {

        try {
            // System.out.println(channel.realpath(remoteFilePath));
            SftpATTRS attrs = channel.stat(remoteDirectoryPath);
            return attrs.isDir();
        } catch (SftpException e) {
            // e.printStackTrace();
            return false;
        }


//        String originalWorkingDirectory = getWorkingDirectory();
//        try {
//            changeDirectory(remoteDirectoryPath);
//        } catch (FtpException e) {
//            //文件夹不存在,会抛出异常。
//            return false;
//        }
//        //恢复 ftpClient 当前工作目录属性
//        changeDirectory(originalWorkingDirectory);
//        return true;
    }
项目:embeddedlinux-jvmdebugger-intellij    文件:ClasspathServiceTest.java   
@Before
public void setUp() throws Exception {
    classpathService = new ClasspathService(project);
    hostFiles = Arrays.asList(jar1, jar2, output);
    when(jar1.getName()).thenReturn(JAR1_NAME);
    when(jar1.lastModified()).thenReturn(JAR1_LAST_MODIFIED);
    when(jar1.length()).thenReturn(JAR1_SIZE);
    when(jar2.getName()).thenReturn(JAR2_NAME);
    when(jar2.length()).thenReturn(JAR2_SIZE);
    when(jar2.lastModified()).thenReturn(JAR2_LAST_MODIFIED);
    when(output.getName()).thenReturn("untitledproject");
    when(jar1Server.getFilename()).thenReturn(JAR1_NAME);
    when(jar2Server.getFilename()).thenReturn(JAR2_NAME);
    when(jar1Server.getAttrs()).thenReturn(mock(SftpATTRS.class));
    when(jar2Server.getAttrs()).thenReturn(mock(SftpATTRS.class));
    Vector vector = new Vector();
    vector.add(jar1Server);
    vector.add(jar2Server);
    when(target.getAlreadyDeployedLibraries()).thenReturn(vector);
}
项目:darceo    文件:SftpDataStorageClient.java   
/**
 * Delete directory and its content recursively.
 * 
 * @param channel
 *            open channel to SFTP server
 * @param path
 *            path of the directory
 * @throws SftpException
 *             when something went wrong
 */
@SuppressWarnings("unchecked")
private void traverse(ChannelSftp channel, String path)
        throws SftpException {
    SftpATTRS attrs = channel.stat(path);
    if (attrs.isDir()) {
        Vector<LsEntry> files = channel.ls(path);
        if (files != null && files.size() > 0) {
            Iterator<LsEntry> it = files.iterator();
            while (it.hasNext()) {
                LsEntry entry = it.next();
                if ((!entry.getFilename().equals(".")) && (!entry.getFilename().equals(".."))) {
                    traverse(channel, path + "/" + entry.getFilename());
                }
            }
        }
        channel.rmdir(path);
    } else {
        channel.rm(path);
    }
}
项目:daris    文件:JschSftpClient.java   
@Override
public void put(FileAttrs file, InputStream in) throws Throwable {
    String path = file.path();
    if (file.isDirectory()) {
        mkdirs(this.channel, path, preserve() ? file.mode() : null, preserve() ? file.mtime() : null);
    } else {
        String parent = PathUtils.getParent(path);
        if (parent != null && !exists(this.channel, parent)) {
            mkdirs(this.channel, parent, null, null);
        }
        this.channel.put(in, path, null, com.jcraft.jsch.ChannelSftp.OVERWRITE);
        if (preserve()) {
            // TODO test
            SftpATTRS attrs = this.channel.stat(path);
            attrs.setPERMISSIONS(file.mode());
            attrs.setACMODTIME(file.atime(), file.mtime());
            this.channel.setStat(path, attrs);
        }
    }
}
项目:ant-ivy    文件:SFTPRepository.java   
/**
 * This method is similar to getResource, except that the returned resource is fully initialized
 * (resolved in the sftp repository), and that the given string is a full remote path
 *
 * @param path
 *            the full remote path in the repository of the resource
 * @return a fully initialized resource, able to answer to all its methods without needing any
 *         further connection
 */
@SuppressWarnings("unchecked")
public Resource resolveResource(String path) {
    try {
        List<LsEntry> r = getSftpChannel(path).ls(getPath(path));
        if (r != null) {
            SftpATTRS attrs = r.get(0).getAttrs();
            return new BasicResource(path, true, attrs.getSize(),
                        attrs.getMTime() * MILLIS_PER_SECOND, false);
        }
    } catch (Exception e) {
        Message.debug("Error while resolving resource " + path, e);
        // silent fail, return nonexistent resource
    }

    return new BasicResource(path, false, 0, 0, false);
}
项目:java-sftp    文件:Stat.java   
@Override
protected void execute() throws SftpResult, JSchException {
    ChannelSftp ch = channel();
    try {
        SftpATTRS attrs = ch.stat(path);
        throw new SftpResult(attrs);
    } catch (SftpException e) {
        if (e.id == SSH_FX_NO_SUCH_FILE) {
            throw new SftpResult(null);
        } else {
            throw new SftpError(e, "Error checking stat of %s", path);
        }
    } finally {
        release(ch);
    }
}
项目:geokettle-2.0    文件:SFTPClient.java   
public FileType getFileType(String filename) throws KettleJobException
 {
try {
    SftpATTRS attrs=c.stat(filename);
        if (attrs == null)  return FileType.IMAGINARY;

        if ((attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS) == 0)
            throw new KettleJobException("Unknown permissions error");

        if (attrs.isDir())
            return FileType.FOLDER;
        else
            return FileType.FILE;
} catch (Exception e) {
        throw new KettleJobException(e);
    }
}
项目:geokettle-2.0    文件:SFTPClient.java   
public boolean folderExists(String foldername) 
 {
    boolean retval =false;
    try {
        SftpATTRS attrs=c.stat(foldername);
        if (attrs == null) return false;

        if ((attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS) == 0)
            throw new KettleJobException("Unknown permissions error");

        retval=attrs.isDir();
    } catch (Exception e) {
        // Folder can not be found!
        }
    return retval;
}
项目:read-open-source-code    文件:SFTPClient.java   
public FileType getFileType(String filename) throws KettleJobException
 {
try {
    SftpATTRS attrs=c.stat(filename);
        if (attrs == null)  return FileType.IMAGINARY;

        if ((attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS) == 0)
            throw new KettleJobException("Unknown permissions error");

        if (attrs.isDir())
            return FileType.FOLDER;
        else
            return FileType.FILE;
} catch (Exception e) {
        throw new KettleJobException(e);
    }
}
项目:read-open-source-code    文件:SFTPClient.java   
public boolean folderExists(String foldername) 
 {
    boolean retval =false;
    try {
        SftpATTRS attrs=c.stat(foldername);
        if (attrs == null) return false;

        if ((attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS) == 0)
            throw new KettleJobException("Unknown permissions error");

        retval=attrs.isDir();
    } catch (Exception e) {
        // Folder can not be found!
    }
    return retval;
}
项目:kettle-4.4.0-stable    文件:SFTPClient.java   
public FileType getFileType(String filename) throws KettleJobException
 {
try {
    SftpATTRS attrs=c.stat(filename);
        if (attrs == null)  return FileType.IMAGINARY;

        if ((attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS) == 0)
            throw new KettleJobException("Unknown permissions error");

        if (attrs.isDir())
            return FileType.FOLDER;
        else
            return FileType.FILE;
} catch (Exception e) {
        throw new KettleJobException(e);
    }
}
项目:kettle-4.4.0-stable    文件:SFTPClient.java   
public boolean folderExists(String foldername) 
 {
    boolean retval =false;
    try {
        SftpATTRS attrs=c.stat(foldername);
        if (attrs == null) return false;

        if ((attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS) == 0)
            throw new KettleJobException("Unknown permissions error");

        retval=attrs.isDir();
    } catch (Exception e) {
        // Folder can not be found!
    }
    return retval;
}
项目:kettle-trunk    文件:SFTPClient.java   
public FileType getFileType(String filename) throws KettleJobException
 {
try {
    SftpATTRS attrs=c.stat(filename);
        if (attrs == null)  return FileType.IMAGINARY;

        if ((attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS) == 0)
            throw new KettleJobException("Unknown permissions error");

        if (attrs.isDir())
            return FileType.FOLDER;
        else
            return FileType.FILE;
} catch (Exception e) {
        throw new KettleJobException(e);
    }
}
项目:kettle-trunk    文件:SFTPClient.java   
public boolean folderExists(String foldername) 
 {
    boolean retval =false;
    try {
        SftpATTRS attrs=c.stat(foldername);
        if (attrs == null) return false;

        if ((attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS) == 0)
            throw new KettleJobException("Unknown permissions error");

        retval=attrs.isDir();
    } catch (Exception e) {
        // Folder can not be found!
    }
    return retval;
}
项目:vbrowser    文件:SftpFileSystem.java   
public void setSftpAttrs(String path, boolean isDir, SftpATTRS attrs) throws VrsException
{
    try
    {
        synchronized (serverMutex)
        {
            checkState();
            sftpChannel.setStat(path, attrs);
        }
    }
    catch (SftpException e)
    {
        // find out what is wrong:

        if (this.existsPath(path, isDir) == false)
        {
            // Error Handling: return better Exception
            throw new ResourceNotFoundException("Path doesn't exists:" + path);
        }
        else
        {
            throw convertException(e);
        }
    }
}
项目:vbrowser    文件:SftpFileSystem.java   
public boolean isLink(String path) throws VrsException
{
    SftpATTRS attrs = getSftpAttrs(path);

    boolean val = attrs.isLink();
    if (val)
    {
        String strs[] = attrs.getExtended();
        if (strs != null)
        {
            int i = 0;
            for (String str : strs)
            {
                System.err.println("" + (i++) + ":" + str);
            }
        }

    }
    return val;
}
项目:cloudhopper-commons    文件:SftpRemoteFileSystem.java   
public boolean exists(String filename) throws FileSystemException {
    // we have to be connected
    if (channel == null) {
        throw new FileSystemException("Not yet connected to SFTP server");
    }

    // easiest way to check if a file already exists is to do a file stat
    // this method will error out if the remote file does not exist!
    try {
        SftpATTRS attrs = channel.stat(filename);
        // if we get here, then file exists
        return true;
    } catch (SftpException e) {
        // map "no file" message to return correct result
        if (e.getMessage().toLowerCase().indexOf("no such file") >= 0) {
            return false;
        }
        // otherwise, this means an underlying error occurred
        throw new FileSystemException("Underlying error with SFTP session while checking if file exists", e);
    }
}
项目:pentaho-kettle    文件:SFTPClient.java   
public FileType getFileType( String filename ) throws KettleJobException {
  try {
    SftpATTRS attrs = c.stat( filename );
    if ( attrs == null ) {
      return FileType.IMAGINARY;
    }

    if ( ( attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS ) == 0 ) {
      throw new KettleJobException( "Unknown permissions error" );
    }

    if ( attrs.isDir() ) {
      return FileType.FOLDER;
    } else {
      return FileType.FILE;
    }
  } catch ( Exception e ) {
    throw new KettleJobException( e );
  }
}
项目:pentaho-kettle    文件:SFTPClient.java   
public boolean folderExists( String foldername ) {
  boolean retval = false;
  try {
    SftpATTRS attrs = c.stat( foldername );
    if ( attrs == null ) {
      return false;
    }

    if ( ( attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS ) == 0 ) {
      throw new KettleJobException( "Unknown permissions error" );
    }

    retval = attrs.isDir();
  } catch ( Exception e ) {
    // Folder can not be found!
  }
  return retval;
}
项目:Reer    文件:SftpResourceAccessor.java   
public ExternalResourceMetaData getMetaData(URI uri, boolean revalidate) {
    LockableSftpClient sftpClient = sftpClientFactory.createSftpClient(uri, credentials);
    try {
        SftpATTRS attributes = sftpClient.getSftpClient().lstat(uri.getPath());
        return attributes != null ? toMetaData(uri, attributes) : null;
    } catch (com.jcraft.jsch.SftpException e) {
        if (e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE) {
            return null;
        }
        throw ResourceExceptions.getFailed(uri, e);
    } finally {
        sftpClientFactory.releaseSftpClient(sftpClient);
    }
}
项目:Reer    文件:SftpResourceAccessor.java   
private ExternalResourceMetaData toMetaData(URI uri, SftpATTRS attributes) {
    long lastModified = -1;
    long contentLength = -1;

    if ((attributes.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_ACMODTIME) != 0) {
        lastModified = attributes.getMTime() * 1000;
    }
    if ((attributes.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_SIZE) != 0) {
        contentLength = attributes.getSize();
    }

    return new DefaultExternalResourceMetaData(uri, lastModified, contentLength);
}
项目:keepass2android    文件:SftpStorage.java   
private void setFromAttrs(FileEntry fileEntry, SftpATTRS attrs) {
    fileEntry.isDirectory = attrs.isDir();
    fileEntry.canRead = true; // currently not inferred from the
                                // permissions.
    fileEntry.canWrite = true; // currently not inferred from the
                                // permissions.
    fileEntry.lastModifiedTime = ((long) attrs.getMTime()) * 1000;
    if (fileEntry.isDirectory)
        fileEntry.sizeInBytes = 0;
    else
        fileEntry.sizeInBytes = attrs.getSize();
}
项目:keepass2android    文件:SftpStorage.java   
private List<FileEntry> listFiles(String path, ChannelSftp c) throws Exception {
    try {
        List<FileEntry> res = new ArrayList<FileEntry>();
        @SuppressWarnings("rawtypes")
        java.util.Vector vv = c.ls(extractSessionPath(path));
        if (vv != null) {
            for (int ii = 0; ii < vv.size(); ii++) {

                Object obj = vv.elementAt(ii);
                if (obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry) {
                    LsEntry lsEntry = (com.jcraft.jsch.ChannelSftp.LsEntry) obj;

                    if ((lsEntry.getFilename().equals("."))
                            ||(lsEntry.getFilename().equals(".."))
                            )
                        continue;

                    FileEntry fileEntry = new FileEntry();
                    fileEntry.displayName = lsEntry.getFilename();
                    fileEntry.path = createFilePath(path, fileEntry.displayName);
                    SftpATTRS attrs = lsEntry.getAttrs();
                    setFromAttrs(fileEntry, attrs);
                    res.add(fileEntry);
                }

            }
        }
        return res;
    } catch (Exception e) {
        tryDisconnect(c);
        throw convertException(e);
    }
}
项目:KeePass2Android    文件:SftpStorage.java   
private void setFromAttrs(FileEntry fileEntry, SftpATTRS attrs) {
    fileEntry.isDirectory = attrs.isDir();
    fileEntry.canRead = true; // currently not inferred from the
                                // permissions.
    fileEntry.canWrite = true; // currently not inferred from the
                                // permissions.
    fileEntry.lastModifiedTime = ((long) attrs.getMTime()) * 1000;
    if (fileEntry.isDirectory)
        fileEntry.sizeInBytes = 0;
    else
        fileEntry.sizeInBytes = attrs.getSize();
}
项目:KeePass2Android    文件:SftpStorage.java   
private List<FileEntry> listFiles(String path, ChannelSftp c) throws Exception {
    try {
        List<FileEntry> res = new ArrayList<FileEntry>();
        @SuppressWarnings("rawtypes")
        java.util.Vector vv = c.ls(extractSessionPath(path));
        if (vv != null) {
            for (int ii = 0; ii < vv.size(); ii++) {

                Object obj = vv.elementAt(ii);
                if (obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry) {
                    LsEntry lsEntry = (com.jcraft.jsch.ChannelSftp.LsEntry) obj;

                    if ((lsEntry.getFilename().equals("."))
                            ||(lsEntry.getFilename().equals(".."))
                            )
                        continue;

                    FileEntry fileEntry = new FileEntry();
                    fileEntry.displayName = lsEntry.getFilename();
                    fileEntry.path = createFilePath(path, fileEntry.displayName);
                    SftpATTRS attrs = lsEntry.getAttrs();
                    setFromAttrs(fileEntry, attrs);
                    res.add(fileEntry);
                }

            }
        }
        return res;
    } catch (Exception e) {
        tryDisconnect(c);
        throw convertException(e);
    }
}
项目:aliyun-oss-hadoop-fs    文件:SFTPFileSystem.java   
/**
 * Convert the file information in LsEntry to a {@link FileStatus} object. *
 *
 * @param sftpFile
 * @param parentPath
 * @return file status
 * @throws IOException
 */
private FileStatus getFileStatus(ChannelSftp channel, LsEntry sftpFile,
    Path parentPath) throws IOException {

  SftpATTRS attr = sftpFile.getAttrs();
  long length = attr.getSize();
  boolean isDir = attr.isDir();
  boolean isLink = attr.isLink();
  if (isLink) {
    String link = parentPath.toUri().getPath() + "/" + sftpFile.getFilename();
    try {
      link = channel.realpath(link);

      Path linkParent = new Path("/", link);

      FileStatus fstat = getFileStatus(channel, linkParent);
      isDir = fstat.isDirectory();
      length = fstat.getLen();
    } catch (Exception e) {
      throw new IOException(e);
    }
  }
  int blockReplication = 1;
  // Using default block size since there is no way in SFTP channel to know of
  // block sizes on server. The assumption could be less than ideal.
  long blockSize = DEFAULT_BLOCK_SIZE;
  long modTime = attr.getMTime() * 1000; // convert to milliseconds
  long accessTime = 0;
  FsPermission permission = getPermissions(sftpFile);
  // not be able to get the real user group name, just use the user and group
  // id
  String user = Integer.toString(attr.getUId());
  String group = Integer.toString(attr.getGId());
  Path filePath = new Path(parentPath, sftpFile.getFilename());

  return new FileStatus(length, isDir, blockReplication, blockSize, modTime,
      accessTime, permission, user, group, filePath.makeQualified(
          this.getUri(), this.getWorkingDirectory()));
}
项目:stroom-agent    文件:SFTPTransfer.java   
public boolean isDir(String targetDir) throws SftpException {
    try {
        SftpATTRS attrs = channelSftp.stat(targetDir);
        return attrs.isDir();
    } catch (SftpException sftpException) {
        return false;
    }
}
项目:spring-boot    文件:SftpConnection.java   
/**
     * Determines whether a file exists or not
     * 如果是文件夹,返回 false
     *
     * @param remoteFilePath
     * @return true if exists, false otherwise
     * @throws IOException thrown if any I/O error occurred.
     */
    @Override
    public boolean existsFile(String remoteFilePath) {


        try {
            // System.out.println(channel.realpath(remoteFilePath));
            SftpATTRS attrs = channel.stat(remoteFilePath);
            return attrs.isReg();
        } catch (SftpException e) {
            e.printStackTrace();
            return false;
        }

//        try {
//            // ls 命令
//            // 如果是文件夹或文件夹的符号链接,会进入该文件夹,进行列表,则文件个数会大于 1
//            // 如果是文件,则只会返回该文件本身,文件个数 =1
//            Vector<LsEntry> lsEntries = channel.ls(remoteFilePath);
//
//            for(LsEntry entry:lsEntries)
//               System.out.println(entry.getFilename());
//
//            return lsEntries.size() == 1;
//        } catch (SftpException e) {
//            e.printStackTrace();
//            return false;
//        }

    }
项目:OHMS    文件:SshUtil.java   
/**
 * This method returns the file attributes of the remote file.
 *
 * @param session JSch session
 * @param remoteFile Absolute path of the remote file
 * @return SftpATTRS object that contains the file attributes
 * @throws JSchException
 * @throws SftpException
 */
public static SftpATTRS lstat( Session session, String remoteFile )
    throws JSchException, SftpException
{
    ChannelSftp sftpChannel = (ChannelSftp) session.openChannel( "sftp" );
    sftpChannel.connect();
    SftpATTRS fileStat = sftpChannel.lstat( remoteFile );
    sftpChannel.disconnect();
    return fileStat;
}
项目:OHMS    文件:SshUtil.java   
/**
 * This method returns the file attributes of the remote file.
 * 
 * @param session JSch session
 * @param remoteFile Absolute path of the remote file
 * @return SftpATTRS object that contains the file attributes
 * @throws JSchException
 * @throws SftpException
 */
public static SftpATTRS lstat( Session session, String remoteFile )
    throws JSchException, SftpException
{
    ChannelSftp sftpChannel = (ChannelSftp) session.openChannel( "sftp" );
    sftpChannel.connect();
    SftpATTRS fileStat = sftpChannel.lstat( remoteFile );
    sftpChannel.disconnect();
    return fileStat;
}
项目:OHMS    文件:EsxiSshUtil.java   
/**
 * This method returns the file attributes of the remote file.
 *
 * @param session JSch session
 * @param remoteFile Absolute path of the remote file
 * @return SftpATTRS object that contains the file attributes
 * @throws JSchException
 * @throws SftpException
 */
public static SftpATTRS lstat( Session session, String remoteFile )
    throws JSchException, SftpException
{
    ChannelSftp sftpChannel = (ChannelSftp) session.openChannel( "sftp" );
    sftpChannel.connect();
    SftpATTRS fileStat = sftpChannel.lstat( remoteFile );
    sftpChannel.disconnect();
    return fileStat;
}