13 2 2 開啟檔案 新建檔案和關閉檔案操作

2021-05-14 12:43:31 字數 3046 閱讀 6713

開啟檔案操作使用系統呼叫函式

open()

,該函式的作用是建立乙個檔案描述符,其他的函式可以通過檔案描述符對指定檔案進行讀取與寫入的操作。開啟檔案的一般形式是:

open(

檔案路徑

, 標誌);

函式的返回值是檔案描述符,如果開啟檔案成功返回乙個正整數,否則返回

–1。標誌是用於指定開啟檔案操作模式的列舉常量,主標誌如表

13.1

所示。表

13.1

開啟檔案操作的主標誌 參

數 說明

引數 說明

o_rdonly

以唯讀方式開啟檔案

o_rdwr

以可讀寫方式開啟檔案

o_wronly

以只寫方式開啟檔案

主標誌是互斥的,使用其中一種則不能再使用另外一種。除了主標誌以外,還有副標誌可與它們配合使用,副標誌可同時使用多個,使用時在主標誌和副標誌之間加入按位與(

|)運算子,如表

13.2

所示。表

13.2

開啟檔案操作的副標誌 參

數 說明

讀寫檔案從檔案尾部開始移動,所寫入的資料追加到檔案尾

o_trunc

若檔案存在並且以可寫的方式開啟時,此標誌會將檔案長度清為

0,而原來存於該檔案的資料也會消失

o_creat

若路徑中的檔案不存在則自動建立該檔案

o_excl

如果與o_creat

同時設定,此指令會去檢查檔案是否存在,檔案若不存在則建立該檔案,否則將導致開啟檔案錯誤。此外,若

o_creat

與o_excl

同時設定,並且將要開啟的檔案為符號連線,則將導致開啟檔案失敗

新建檔案操作是在開啟檔案操作的函式上加入

o_creat

副標誌實現的。當路徑中的檔案不存在時,則建立乙個新檔案。建立新檔案的同時可設定檔案的許可權,這時函式需要增加一組實際引數,形式為:

open(

檔案路徑

, 標誌

, 許可權標誌);

檔案許可權標誌如表

13.3

所示。表

13.3

檔案許可權標誌 參

數 說明

引數 說明

s_irusr

所有者擁有讀許可權

s_ixgrp

群組擁有執行許可權

s_iwusr

所有者擁有寫許可權

s_iroth

其他使用者擁有讀許可權

s_ixusr

所有者擁有執行許可權

s_iwoth

其他使用者擁有寫許可權

s_irgrp

群組擁有讀許可權

s_ixoth

其他使用者擁有執行許可權

s_iwgrp

群組擁有寫許可權

檔案許可權標誌也可以使用加權數字表示,這組數字被稱為

umask

變數,它的型別是

mode_t

,是乙個無符號八進位制數。

umask

變數的定義方法如表

13.4

所示。umask

變數由3

位數字組成,數字的每一位代表一類許可權。使用者所獲得的許可權是加權數值的總和。例如

764表示所有者擁有讀、寫和執行許可權,群組擁有讀和寫許可權,其他使用者擁有讀許可權。

表13.4umask

變數表示方法 加

權數值

1

2

3

位 4

所有者擁有讀許可權

群組擁有讀許可權

其他使用者擁有讀許可權 2

所有者擁有寫許可權

群組擁有寫許可權

其他使用者擁有寫許可權 1

所有者擁有執行許可權

群組擁有執行許可權

其他使用者擁有執行許可權

新建檔案的另乙個函式是

creat()

,該函式的一般形式是:

creat(

路徑, umask);

當檔案被成功建立函式的返回值為

0,否則為

–1。當檔案不需要使用了,則可以使用

close()

函式關閉檔案。關閉檔案的一般形式為:

close(

檔案描述符

),如果關閉檔案成功,

close()

函式的返回

0,否則返回–1。

下例將演示開啟檔案、新建檔案和關閉檔案這

3種操作。程式的邏輯為:指定乙個路徑,如果該檔案存在,輸出提示資訊,關閉該檔案;如果該檔案不存在,則新建檔案並設定檔案屬性,輸出提示資訊,然後關閉該檔案。完整的**如下:

#include //

提供open()

函式#include //

提供mode_t

型別#include //

提供open()

函式的符號

#include //

提供close()

函式#include

int main() }

else

puts("

檔案開啟成功

");

close(f);//

關閉檔案

return 0; }

該程式首先判斷是否存在檔案

test

,判斷的方法是用

open()

函式開啟

test

檔案,如果返回值是

–1,則表示該檔案不存在(有時候並非如此)。當檔案不存在時,使用

open()

函式建立該檔案,並在程式最後關閉。為

mode_t

型變數f_attrib

賦值的方法使用了按位計算操作,將表示檔案許可權的常量進行按位或計算,計算的結果與八進位制數

0664

相同,如圖

13.3

所示。

圖13.3

按位或操作的意義

cmd 新建檔案和新建資料夾

整理備份 一 建立空檔案的幾種方法 1 cd.a.txt cd.表示改變當前目錄為當前目錄,即等於沒改變 而且此命令不會有輸出。表示把命令輸出寫入到檔案。後面跟著a.txt,就表示寫入到a.txt。而此例中命令不會有輸出,所以就建立了沒有內容的空檔案。2 copy nul a.txt nul表示空裝...

Qt 新建資料夾並在該資料夾下新建檔案

在編寫乙個小工具時,需要儲存日誌檔案,並且是統一放在乙個資料夾下,一開始單純的用filename log log.txt 發現行不通,於是檢視qt幫助文件 找到了方法,如下 qstring filename log.txt qdir dir if dir.exists log dir log qst...

linux 新建檔案命令

vi touch是建立檔案的命令,cp mv也算是吧,因為cp是拷貝檔案,mv是移動檔案另外還有好多命令能夠建立檔案,之要該命令能夠重定向輸出到乙個不存在的檔案,就會建立檔案。例如 tail f n 200 usr local tomcat logs catalina.out tmp tomcatl...