天天看點

linux下判斷檔案和目錄是否存在[總結]

1、前言

    工作中涉及到檔案系統,有時候需要判斷檔案和目錄是否存在。我結合apue第四章檔案和目錄,總結一下如何正确判斷檔案和目錄是否存在,友善以後查詢。

2、stat系列函數

  stat函數用來傳回與檔案有關的結構資訊。stat系列函數有三種情況,分别對應檔案名稱、檔案描述符和符号連結檔案。stat結構描述了檔案的屬性,主要包括檔案的類型、檔案大小等等。詳細stat結構如下所示:

linux下判斷檔案和目錄是否存在[總結]
linux下判斷檔案和目錄是否存在[總結]

  我們可以通過stat擷取檔案的類型和檔案大小等資訊。檔案類型有:普通檔案、目錄檔案、塊特殊檔案、字元特殊檔案、fifo、套接字和符号連結。要想通過stat系列函數來判斷檔案或者目錄是否存在,當執行stat函數,如果檔案存在時,還需進一步判斷該檔案是普通檔案還是目錄檔案。

stat系列函數錯誤傳回-1,錯誤碼存在errno中,errno取值如下:

linux下判斷檔案和目錄是否存在[總結]
linux下判斷檔案和目錄是否存在[總結]

3、access函數

  access函數按照實際使用者id和實際組進行通路權限測試。函數原型為:

mode取值:

f_ok   測試檔案是否存在

r_ok  測試讀權限

w_ok 測試寫權限

x_ok 測試執行權限

正确判斷一個檔案是否存在是用access函數,實作如下所示:

linux下判斷檔案和目錄是否存在[總結]

4、oepndir函數

opendir函數用來打開檔案目錄,成功傳回指針,出錯傳回null。實作如下:

linux下判斷檔案和目錄是否存在[總結]

繼續閱讀