C語言檔案與目錄(一)
注意包含標頭檔案
#include <sys/types.h>
#include <sys/stat.h>
1.建立與刪除目錄
在Linux系統中,目錄就是一個資料夾,檔案可以存放在目錄中。目錄是一種特殊的檔案,需要對目錄設定許可權。 建立目錄函式mkdir:函式mkdir可以硬碟中建立一個目錄,相當於mkdir命令。但與mkdir命令不同的是,這裡的操作是用c語言的函式完成目錄建立的。函式的使用方法如下所示。
int mkdir(char* pathname,mode_t mode);
在引數列表中,pathname是一個字串,表示需要建立的目錄路徑。mode是表示許可權的八進位制數字。如果目錄建立成功,則返回整型數0,否則返回整型數-1。要使用這個函式需要在程式中包含“sys/types.h”與“sys/stat.h”兩個標頭檔案。注意:使用mkdir函式建立目錄時需要指定建立的目錄的許可權模式,許可權模式以八進位制的方式給出(以0開頭的四個數字)。
DEMO:
char dir1[255];
char *mainpath="D:\C\test";
strcat(strcpy(dir1,mainpath),"\dir1");
if(mkdir(dir1,0777)==0)
{
printf("created successfully!\n");
}
else
{
printf("Error:%s!\n",strerror(errno));
}
刪除目錄函式rmdir:rmdir函式的作用是刪除一個空目錄。該函式的使用方法如下所示。
int rmdir(char *pathname);
引數pathname是需要刪除的目錄字串指標。如果刪除成功,則返回一個整型0,否則返回-1。
DEMO:
if(rmdir(dir1)==0)
{
printf("removed %s successfully!\n",dir1);
}
else
{
printf("Error:%s!\n",strerror(errno));
}
2.建立與刪除檔案
所謂建立檔案,是指在一個目錄建立一個空檔案,可以檔案可供其他程式的寫入操作。刪除檔案指將無用的檔案從磁碟中刪除無用的檔案。本節將講解檔案的建立與刪除操作。建立檔案函式creat:函式creat的作用是在目錄中建立一個空檔案,該函式的使用方法如下所示。
int creat(char * pathname, mode_t mode);
函式的引數pathname表示需要建立檔案的檔名和目錄名。mode表示這個檔案的許可權。檔案許可權的設定見本章第一節所述。檔案建立成功時返回建立檔案的編號,否則返回-1。
DEMO:
if(create(file1)==-1)
{
printf("Error:%s!\n",strerror(errno));
}
else
{
printf("created %s successfully!\n",file1);
}
刪除檔案函式remove:函式remove的作用是刪除一個檔案。這個函式的使用方法如下所示。
int remove(char *pathname);
引數remove是一個字串,表示需要刪除的目錄。檔案刪除成功則返回0,則否返回-1。要使用這個函式需要在程式的最前面包含下面的標頭檔案#include <stdio.h>。
DEMO:
if(remove(file1)==0)
{
printf("deleted %s successfully!\n",file1);
}
else
{
printf("Error:%s!\n",strerror(errno));
}
3.臨時檔案操作
建立臨時檔案函式mkstemp:所謂臨時檔案,指的是程式執行時為了儲存中間資料建立的檔案。計算機重啟時,這些檔案會自動刪除。如果在程式執行時,需要把檔案短時間的寫到磁碟上,可以使用mkstemp函式建立一個臨時檔案。mkstemp函式的使用方法如下所示。
int mkstemp(char *template);
引數template表示需要建立臨時檔案的檔名字串。檔名字串中最後六個字元必須是XXXXXX。mkstemp函式會以可讀寫模式和0600許可權來開啟該檔案。如果檔案不存在則會建立這個檔案。返回值是開啟檔案的編號,如果檔案建立不成功,則返回-1。 注意:引數template所指的檔名稱字串必須宣告為陣列,用下面這種宣告陣列的方法宣告。char template[] =”template-XXXXXX”;使用下面這種宣告字串的方法宣告的template是不能執行的char *template =
“template-XXXXXX”;
DEMO:
char tem_file[]="template-file";
if(mkstemp(tem_file)==-1)
{
printf("Error:%s!\n",strerror(errno));
}
else
{
printf("created tem_file %s successfully!\n",tem_file);
}