C建立臨時檔案

2021-09-25 07:58:03 字數 3229 閱讀 3758

前言:linux下除了有實實在在的檔案外,還可以建立臨時的檔案和目錄,這裡介紹兩個建立臨時檔案的函式,tmpfilef和mkstemp,以及建立臨時目錄的函式mkdtemp。這三個函式具體用法如下。

一、建立乙個無名的臨時檔案,程式退出時關閉臨時檔案

(1)標頭檔案        #include

(2)函式原型   file *tmpfile(void);

(3)返回值

成功:返回乙個檔案流

失敗:null,沒有建立臨時檔案

注意:tmpfile建立的臨時檔案只能讀取一次,讀取之後裡面的內容就沒有了

具體**如下:

#include #include #include #include #include #include #include #include #include #include #define maxline  1029   

int main(int argc,char *ar**)

執行結果如下:

從圖中的顯示結果可知道驗證了這句話:tmpfile建立的臨時檔案只能讀取一次,讀取之後裡面的內容就沒有了

二、建立乙個臨時檔案,檔名自定義

(1)函式原型  int mkstemp(char *template);

(2)引數:

a、template:臨時檔案的名字,最後6個字元一定是******,絕對不能少,記得是大寫

(3)返回值:

成功:檔案描述符,並建立乙個臨時檔案,檔名是自定義的,後6個字元是系統自己填充

失敗:-1

特點:這個函式建立的臨時檔案可以讀多次,而且資料不會丟失,這是上面tmpfile函式所沒有的功能

具體**如下:

#include #include #include #include #include #include #include #include #include #include #define maxline  1029

int main(int argc,char *ar**)

printf("temp file name is: %s\n",name);

write(fd,buf1,strlen(buf1)); //寫資料到臨時檔案中

lseek(fd,0,seek_set); //重新把檔案指標偏移到檔案頭

read(fd,buf2,sizeof(buf2)); //從臨時檔案中讀出資料

lseek(fd,0,seek_set); //重新把檔案指標偏移到檔案頭

read(fd,buf3,sizeof(buf3)); //可以讀多次,而且資料不會丟失

printf("%s",buf3);

fputs(buf2,stdout);

return 0;

}

執行效果如下:

比較上面的函式這裡的區別出來了:這個函式建立的臨時檔案可以讀多次,而且資料不會丟失,這是上面tmpfile函式所沒有的功能

好了上最後乙個函式:

三、建立臨時目錄

(1) 函式原型    char *mkdtemp(char *template);

(2)引數:臨時目錄的路徑,最後6個字元一定是******,絕對不能少,記得是大寫

(3)返回值:

成功:返回指向目錄名的指標,建立目錄成功

失敗:null

注意:這個程式退出後不會自動從檔案系統中刪除目錄,要用unlink函式來刪除

**如下:

#include #include #include #include #include #include #include #include #include #define maxline  1029

int main(int argc,char *ar**)

lstat(path,&fileinfo);

if(s_isdir(fileinfo.st_mode)) //判斷是否是目錄

else if(s_isreg(fileinfo.st_mode)) //判斷是否是普通檔案

printf("temp directpry name:%s\n",path);

entry = opendir(path); //開啟目錄

chdir(path); //進入目錄

mkdir("test",0777); //建立乙個名字為test的目錄

int fd = open("test.txt",o_rdwr|o_creat,0777); //以讀寫許可權開啟乙個名字為test.txt的檔案,如果不存則建立

//可以在臨時目錄中建立檔案並進行讀寫操作

char buf4 = "hello world";

char buf5[100];

bzero(buf5,sizeof(buf5));

write(fd,buf4,sizeof(buf4));

lseek(fd,0,seek_set); //重新把檔案指標偏移到檔案頭

read(fd,buf5,sizeof(buf5));

printf("%s\n",buf5);

while(1)

unlink(path); //解除連線,從檔案系統中刪除建立的臨時目錄

return 0;

}

執行效果如下:

關閉檔案方法(remove和unlink)

1、先關後刪

os.close(fd)

os.remove(fname)

fd 為檔案描述符與檔案物件不是一樣的需要系統級別的關閉
2、

所以發現remove是間接呼叫unlink來刪除檔案的目的。

使用方法

int remove(const char *pathname);  // #include

int unlink(const char *pathname);  // #include

int rmdir(const char *pathname);   // #include

C 建立臨時檔案

1.在臨時檔案只能夠建立乙個臨時檔案並返回該檔案的完整路徑 在臨時檔案只能夠建立乙個臨時檔案並返回該檔案的完整路徑 c documents and settings yourname local settings temp t e6.tmp system.io.path.gettempfilenam...

c語言建立臨時檔案

建立名字唯一的臨時檔案 推薦使用tmpfile和mkstemp,因為這兩個函式建立檔案的同時並開啟檔案,總的來說安全又可靠。tmpfile返回的是檔案流指標file mkstemp返回的是檔案描述符。表頭檔案 include 函式定義 file tmpfile void 函式描述 建立唯一的臨時檔案...

unix臨時檔案建立

看例子,建立乙個檔案,在unlink,檔案i節點的鏈結數變為0,但持有該檔案的控制代碼,依然可以fgets和fputs該檔案,說明檔案的資料塊依然存在,在fclose之後,才徹底刪除,這就是使用臨時檔案的原理 include include include include include setvb...