libssh C++封裝之六(Dir)

1 概述

??libssh是一個在客戶端和服務器端實現SSHv2協議的多平臺C庫。使用libssh,您可以遠程執行程序、傳輸文件、使用安全透明的隧道、管理公鑰等等。本文描述的對libssh客戶端功能的C++封裝。
libssh下載地址

3 實現

3.5 Dir

Dir類型管理遠程路徑,通過SFTP和Channel實現(有的服務端不支持SFtp).
類圖

3.5.1 Dir定義

3.5.1.1 Dir
class DirPrivate;
class SFtp;
class Scp;
class FileInfoPtr;
class FileInfos;
class Dir
{
public:enum Filter {Dirs        = 0x001,Files       = 0x002,Drives      = 0x004,NoSymLinks  = 0x008,AllEntries  = Dirs | Files | Drives,TypeMask    = 0x00f,Readable    = 0x010,Writable    = 0x020,Executable  = 0x040,PermissionMask    = 0x070,Modified    = 0x080,Hidden      = 0x100,System      = 0x200,AccessMask  = 0x3F0,AllDirs       = 0x400,CaseSensitive = 0x800,NoDot         = 0x2000,NoDotDot      = 0x4000,NoDotAndDotDot = NoDot | NoDotDot,NoFilter = -1};enum SortFlag { Name        = 0x00,Time        = 0x01,Size        = 0x02,Type        = 0x03,Property    = 0x04,Unsorted    = 0x07,SortByMask  = 0x07,DirsFirst   = 0x08,Reversed    = 0x10,IgnoreCase  = 0x20,DirsLast    = 0x40,LocaleAware = 0x80,NoSort = -1};Dir(SFtp const& sftp, const char* path);Dir(Scp const& scp, const char* path);~Dir();bool is_root() const;const char* dirname() const;FileInfos fileinfos(Filter filter = NoFilter, SortFlag sortFlag = NoSort);bool mkdir(const char* path);bool rmdir(const char* path);bool mkfile(const char* filename);bool rmfile(const char* filename);bool rename(const char *original, const  char *newname);bool chmod(const char* filename, uint16_t mode);static std::string dirname(const char* filename);static std::string basename(const char* filename);
private:void sort(FileInfos &fileInfos, SortFlag sortFlag);Dir(Dir const&);Dir & operator == (Dir const&);DirPrivate* d;
};

接口函數:

  • is_root 是否root目錄
  • dirname 返回路徑名稱
  • fileinfos 返回該目錄文件列表
  • mkdir 創建目錄
  • rmdir 刪除目錄
  • mkfile 創建文件
  • rmfile 刪除文件
  • rename 文件目錄改名
  • chmod 修改文件權限
  • dirname 獲取文件目錄名
  • basename 獲取文件基本名稱
3.5.1.2 DirPrivate
class DirPrivate
{
public:DirPrivate(const char * p): path(p){}virtual ~DirPrivate() {}virtual bool opendir() = 0;virtual sftp_attributes readdir() = 0;virtual void closedir() = 0;virtual bool mkdir(const char* path) = 0;virtual bool rmdir(const char* path) = 0;virtual bool mkfile(const char* filename) = 0;virtual bool rmfile(const char* filename) = 0;virtual bool rename(const char *original, const  char *newname) = 0;virtual bool chmod(const char* filename, uint16_t mode) = 0;bool is_relative_path(const char * path);inline bool is_empty(const char * path) { return !path || *path == 0; }inline std::string absolute_path(const char * p) { return path + "/" + p; }std::string path;
};

接口定義:

  • opendir 打開目錄開始遍歷
  • readdir 讀取目錄信息
  • closedir 關閉目錄遍歷
  • mkdir 創建目錄
  • rmdir 刪除目錄
  • mkfile 創建文件
  • rmfile 刪除文件
  • rename 文件改名
  • chmod 修改文件權限
  • is_relative_path 判斷路徑是否是相對路徑
  • is_empty 判斷路徑是否為空
  • absolute_path 返回絕對路徑
3.5.1.3 SftpDirPrivate

基于SFTP協議實現DirPrivate接口

class SftpDirPrivate : public DirPrivate
{
public:SftpDirPrivate(const char * p, sftp_session s): DirPrivate(p), sftp(s), dir(0){}bool opendir() override;sftp_attributes readdir() override;void closedir() override;bool mkdir(const char* path) override;bool rmdir(const char* path) override;bool mkfile(const char*

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12854.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uni u-form-item 只有圖標點擊有效

如下,輸入的地方是個選擇項,代碼如下: <u-form-item class=u-form-item label="監督主題" prop="themeName" borderBottom ref="item1" @click="openPopup(0)" > <u--input v-model="form.themeNam…

PTA--《面線對象程序設計》作業3-繼承與多態

目錄 一&#xff1a;函數題 6-2 長方形長方體類&#xff1a; 6-1 從抽象類shape類擴展出一個圓形類Circle 二&#xff1a;編程題 7-1&#xff1a;周長計算器 一&#xff1a;函數題 6-2 長方形長方體類&#xff1a; 定義一個長方形類Rectangle&#xff0c;擁有長、寬屬性…

定時發圈操作介紹

1、登陸已有的賬號&#xff0c;點擊到"朋友圈"功能 2、選擇要發圈的微信號&#xff0c;編輯發圈的文案內容 3、自定義想要的時間點 4、點擊"立即發送" 5、可進行跟圈

【JavaScript】eval

JavaScript 中的 eval() 是一個全局函數&#xff0c;它接受一個字符串參數&#xff0c;并將其作為 JavaScript 代碼進行解析和執行&#xff1b;如果接收的不是一個字符串&#xff0c;則會將傳入的數據直接返回。 eval 的基本用法&#xff1a; eval() 函數將傳入的字符串參數作為…

深度解析 Spring 源碼:解密AOP切點和通知的實現機制

文章目錄 深度解析 Spring 源碼&#xff1a;解密AOP切點和通知的實現機制一、Spring AOP的基礎知識1.1 AOP的核心概念&#xff1a;切點、通知、切面等1.2 Spring AOP與傳統AOP的區別和優勢 二、深入分析切點和通知的實現2.1 研究 Pointcut 接口及其實現類2.1.1 Pointcut 接口2.…

powershell 防止休眠或屏幕關閉并定時截屏保存

powershell 防止休眠或屏幕關閉 01 前言 因工作需要&#xff0c;需要在用戶的機器上進行操作&#xff0c;有些工作比較耗時、耗CPU&#xff0c;配置也不高&#xff0c;因而就不能用這臺機器同時干太多活&#xff0c;又不能干盯著啥也干不了&#xff0c;但是一段時間不操作&am…

鞏固學習9

show-me-the-code題目001 #做為 Apple Store App 獨立開發者&#xff0c;你要搞限時促銷&#xff0c;為你的應用生成激活碼&#xff08;或者優惠券&#xff09;&#xff0c;使用 Python 如何生成 200 個激活碼&#xff08;或者優惠券&#xff09;&#xff1f; import random a…

延遲隊列有哪些

延遲隊列 與時間相關場景的應用,經常用于延后多少時間執行什么任務。 java 自帶延遲隊列 class Solution {public static void main(String[] args) throws InterruptedException {DelayQueue<DelayMealTask> queue = new DelayQueue<>();DelayMealTask task =…

MySQL存儲過程練習

DDL CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 學號,createDate datetime DEFAULT NULL,userName varchar(20) DEFAULT NULL,pwd varchar(36) DEFAULT NULL,phone varchar(11) DEFAULT NULL,age tinyint(3) unsigned DEFAULT NULL,sex char(2) DEFAU…

數據庫審計系統Yearning使用筆記

一、啟動 1、初始化MySQL 啟動mysql docker run -d --namemysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot mysql:5.7創建數據庫&#xff0c;鏈接數據庫并執行以下創建庫的腳步&#xff0c;注意字符集 create database yearning char set utf8mb42、啟動Yeelabs 需要執行…

CDGA|揭秘移動物聯網數據治理秘訣,輕松提升數據質量,賦能智慧未來

在數字化浪潮洶涌的今天&#xff0c;移動物聯網作為連接物理世界與數字世界的橋梁&#xff0c;其數據治理的重要性日益凸顯。高質量的數據不僅是企業決策的基石&#xff0c;更是推動行業智能化、精細化發展的關鍵。本文將為您揭秘移動物聯網數據治理的技巧&#xff0c;助您輕松…

如何設計實用的ITSM自助服務臺

在現代IT服務管理&#xff08;ITSM&#xff09;領域中&#xff0c;自助服務臺已成為IT運維環境的核心組件。它作為企業內部信息中心與其他部門用戶之間的橋梁&#xff0c;一個以用戶為中心的平臺&#xff0c;更注重用戶的自主性和自助能力&#xff0c;使用戶能夠直接訪問所需的…

微軟宣布GPT-4o模型,可在 Azure OpenAI上使用

5月14日&#xff0c;微軟在官網宣布&#xff0c;OpenAI最新發布的多模態模型GPT-4o&#xff0c;可以在 Azure OpenAI 云服務中使用。 據悉&#xff0c;GPT-4o支持跨文本、視頻、音頻多模態推理&#xff0c;例如&#xff0c;通過GPT-4o打造一個AI助手&#xff0c;用于輔導孩子解…

halcon學習之形狀匹配

算子 create_shape_model&#xff08;&#xff09; 創建一個用于匹配的形狀模型 create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID) 參數 Template&#xff1a; NumLevels&#…

基于NIOS-II軟核流水燈和串口通信實現

文章目錄 一、創建工程二、系統設計1. 在 “component library” 標簽欄中找到 “Nios II Processor” 后點擊 Add2. 在 ”Component Library” 標簽欄中的查找窗口輸入 jtag 找到 ”JTAG UART ”&#xff0c;然后點擊 Add3. 添加片上存儲器 On-Chip Memory(RAM)核4. 查找窗口輸…

做簡單易用的GIS資源管理軟件

在室外資源管理領域&#xff0c;采用基于GIS的解決方案已成為主流趨勢&#xff0c;旨在實現資源的高效利用和管理。GIS技術結合資源對象的規劃、定位和監控&#xff0c;為企業提供全面的管理方案&#xff0c;從而優化資源使用、提高運營效率和降低成本。 然而&#xff0c;許多資…

龍迅LT8911EX LVDS橋接到EDP,支持4K30HZ分辨率

龍迅LT8911EX描述&#xff1a; Lontium LT8911EX是LVDS到eDP轉換器&#xff0c;具有單端口或雙端口可配置的LVDS接收器&#xff0c;有1個時鐘通道和最多8個數據通道&#xff0c;每個數據通道最大運行1.2Gbps&#xff0c;最大輸入帶寬為9.6Gbps。轉換器將輸入LVDS數據去序列化&…

OpenNJet產品體驗:探索無限可能

文章目錄 前言一、OpenNJet是什么&#xff1f;二、OpenNJet特性和優點三、OpenNJet功能規劃四、OpenNJet快速上手五、OpenNJet的使用總結 前言 現代社會網絡高速發展&#xff0c;同時也迎來了互聯網發展的高峰&#xff0c;OpenNJet作為一個基于NGINX的面向互聯網和云原生應用提…

掏心經驗分享,軟考中項0基礎入門篇!

想備考下半年中項&#xff08;系統集成項目管理工程師&#xff09;的朋友&#xff0c;不知道如何了解軟考中項&#xff0c;今天給大家整理一篇關于我自己在備考軟考時的一些考量和踩過的一些坑。&#xff08;無廣&#xff0c;放心看&#xff09; 很多小伙伴總是聽大家說軟考中…

NGM-SLAM:首創融合神經輻射場子圖的3DGS-SLAM,問鼎SOTA!

論文標題&#xff1a; NGM-SLAM: Gaussian Splatting SLAM with Radiance Field Submap 論文作者&#xff1a; Mingrui Li, Jingwei Huang, Lei Sun Aaron, Xuxiang Tian, Tianchen Deng, Hongyu Wang 導讀&#xff1a; 3DGS技術因其性能卓越而備受關注&#xff0c;3DGS-SLA…