如何使用Net :: SFTP识别项目是文件还是目录?

时间:2009-11-26 13:16:16

标签: ruby perl net-sftp

如何使用Net::SFTP或ruby代码识别目录项是文件还是目录?

3 个答案:

答案 0 :(得分:6)

do_stat方法似乎可以为您提供这些信息。另请参阅Net::SFTP::Attributesperldoc -f stat的文档。

答案 1 :(得分:5)

说明使用Manni's recommendation

use Fcntl(:mode);

my $permissions  = $sftp->do_stat($path)->perm();
my $is_directory = S_ISDIR($permissions);

答案 2 :(得分:1)

在SFTP和Ruby中至少有两种方法:

require 'net/sftp'
Net::SFTP.start('HOSTNAME', 'USER', :password => 'PASSWORD') do |sftp|

  file = File.expand_path(__FILE__)
  dir  = File.dirname(file)

  sftp.lstat!(file).directory?
  sftp.lstat!(dir).file?

  sftp.file.open(dir, "r") do |f|
    f.stat.file?
    f.stat.directory? # true
  end

end