開啟檔案操作使用系統呼叫函式
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...