1. 程式人生 > >C++ 目錄檔案操作(持續更新)

C++ 目錄檔案操作(持續更新)

判斷目錄是否存在,存在便刪除:

#include<sstream>
#include<unistd.h> 

void DeleteIfExist(char* path)
{
    if(access(path,F_OK)!=0)//適用於linux系統
    {
        cout<<path<<" not exist, skipped."<<endl;
        return;
    }
    ostringstream cmd;
    cmd<<"rm -rvf "<<path;
    system(cmd.str().c_str());
}

這裡說明兩點:

  1. C++庫函式remove以及Linux庫函式rmdir,只能刪除空目錄,或者單個檔案。
  2. 請記住,能用shell命令獲取檔案、資料夾資訊或者操作檔案、資料夾最好用shell命令獲取或者操作,而不要用各種API獲取或者操作,因為當遇到非法資料夾名或非法檔名或非法檔案長度、非法檔案日期、壓縮檔案、連結檔案、稀疏檔案……等各種意料之外的情況時,API會處理的不全面或陷入死迴圈,而shell命令不會。

相關推薦

C++ 目錄檔案操作持續更新

判斷目錄是否存在,存在便刪除: #include<sstream> #include<unistd.h> void DeleteIfExist(char* path)

C#Winform關於對xml檔案的一系列操作持續更新

// 讀取xml檔案到DataTable string filepath = Application.StartupPath + @"\Previous Competitions

關於Form、ModelForm的一些操作持續更新

mit mar rim sub field 後端 錯誤信息 關於 eth 1、前端循環:後端傳到前端的form是可以循環的,以此獲得想要展示的元素 <form method="post" class="form-horizontal" novalidate>

有關於Git操作持續更新

color 命令 合並 暫存 upstream 操作 col check 跟蹤 Git分支: 查看分支:git branch 創建分支:git branch <name> 切換分支:git checkout <name> 創建+切換分支:git ch

地理空間分析中的常用python操作持續更新

本章節主要參考《python地理空間分析指南》第五章的內容。 一、距離測量 距離測量包括歐式距離,球面距離,以及大地線距離(橢球距離)。主要採用math庫(標準庫,無需下載)進行運算。 1.歐式距離 計算任意兩點之間的距離可以採用距離公式:     &nb

c++常用備忘持續更新

1.string和int互轉 int轉string用to_string(int) s+=to_string(root->val); string轉int用atoi(string.c_str()) res += atoi(s.c_str()); 2

Mikrotik-routeros命令行操作持續更新

linu 登錄 com lin 文件 路由配置 令行 enable 實用 Mikrotik是一款比較成熟的軟路由。在沒有條件購買和實用硬件路由器或者交換的時候,這款軟路由可以作為一項參考。 主頁地址:https://mikrotik.com/ wiki文檔:ht

linux下常用操作持續更新

使用者和使用者組:  一,組操作 1,建立組  groupadd test  增加一個test組 新增使用者組: groupadd test 2,修改組 groupmod -n test2  test

C++ Primer 學習筆記持續更新......

本筆記主要是一個記錄,整理和總結一下C++學習過程中的知識點。 struct和class 區別:兩個關鍵字都是進行類的定義。struct也可以定義類,和class定義的類唯一不同之處就在於預設的初始訪問級別,struct在不宣告public或者private

C++編譯錯誤彙總持續更新

1.error C2061: 語法錯誤: 識別符號“_TCHAR”         解決方法:新增一條 #include <tchar.h> 即可成功編譯 2.VS2010中無法開啟原始檔

linux shell 字串獲取長度、替換、擷取、刪除等操作持續更新

測試字串:str=/xxx/file.txt.gz一、長度、變數:說明 表示式 例子 結果 獲取長度 ${#string} ${#str} 16 列出所有以prefix開頭的變數 ${!prefix*}、${!prefix@} ${!st@} str測試${

Python Redis常用操作持續更新

[TOC] # 1、Redis簡介 `redis`是業界主流的`key-value`,`nosql`資料庫之一。和Memcached類似,它支援儲存的value型別相對更多,包括`string`(字串)、`list`(列表)、`set`(集合)、`zset`(sorted set --有序集合)和`hash

C++的一些小操作、常用庫及函式持續更新

  1. 強制保留n位小數(位數不足則強制補零)    標頭檔案:    #include <iomanip>    在輸出前:    cout<<setprecision(n);    也有不用標頭檔案的方式,在輸出前:    cout.setf(ios::fixed); 

持續更新C++ LCT(Link-cut-tree) 動態樹 總結

發現 虛線 tchar 持續更新 ces father img reverse new 準備知識:樹剖&Splay 一、理解LCT的工作原理 先看一道例題: 讓你維護一棵給定的樹,需要支持下面兩種操作: Change x val: 令x點的點權變為val Que

C++ 編程技巧筆記記錄持續更新

算法 模板函數 () 不必要 過大 默認構造函數 函數 容易 [] 前言: 希望通過閱讀《Effective C++》系列《Expectional C++》系列等書 挑選出一些個人覺得重要的條款/經驗/技巧進行記錄總結。 類/對象: 1.基類析構函數應總是public

一個博客萌新的C語言之旅持續更新中....

方便 流程 函數聲明 語言 tex 表達 賦值語句 當前 寫在前面 先更新上一次留下的的C語言練習答案,如下: #include <stdio.h> double mj(double r) { return 3.14*r*r; } int main() { i

一個部落格萌新的C語言之旅持續更新中....

先更新上一次留下的的C語言練習答案,如下: #include <stdio.h> double mj(double r) { return 3.14*r*r; } int main() { int r; double s; r=3; s=mj(r); printf("%f",s); }

《Boost C++ Application Development Cookbook》筆記持續更新

小試牛刀 可用boost::optianal來作為函式返回值的標識,函式返回值用來表示函式是否執行成功,但如果執行成功但沒有正確的結果,這種情況則可以藉助boost::optianal來實現 boost::array 函式返回陣列可以用array,不用擔心資料越界等問題

C#】C#學習筆記持續更新

本章比較雜亂,是本人在學習C#中的一些筆記,並不全面,只是一些隨筆。 1.一個 C# 程式主要包括以下部分: 名稱空間宣告(Namespace declaration) 一個 class Class 方法 Class 屬性 一個 Main 方法 語句(Stat

Hbase常用操作整理持續更新

1. 查詢操作 HBase中rowkey可以唯一標識一行記錄,在HBase查詢的時候,有以下幾種方式: 通過get方式,指定rowkey獲取唯一一條記錄 通過scan方式,設定startRow和stopRow引數進行範圍匹配 全表掃描,即直接掃描整張表中所有行