Как я могу определить, является ли элемент файлом или каталогом, используя Net :: SFTP? - PullRequest
3 голосов
/ 26 ноября 2009

Как определить, является ли элемент каталога файлом или каталогом, используя Net::SFTP или код рубина?

Ответы [ 3 ]

6 голосов
/ 26 ноября 2009

Метод do_stat, кажется, может получить эту информацию. См. Также документацию для Net::SFTP::Attributes и perldoc -f stat.

5 голосов
/ 26 ноября 2009

Для иллюстрации использования Рекомендация Манни :

use Fcntl(:mode);

my $permissions  = $sftp->do_stat($path)->perm();
my $is_directory = S_ISDIR($permissions);
1 голос
/ 29 января 2012

Как минимум два способа сделать это в 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
...