1. 程式人生 > >Linux標準檔案IO操作

Linux標準檔案IO操作

 Linux檔案操作中的標準IO在實際開發過程中比較常用,現將常用的一些標準IO函式進行整理如下。

檔案IO就是對檔案的輸入輸出。對於linux來說,linux的一切都是檔案,包括資料夾。

一些linux常見的檔案型別:

-:普通檔案

d:目錄檔案

c:字元裝置檔案

b:塊裝置檔案

p:管道檔案

l:連結檔案

標準檔案IO(帶快取):【在標頭檔案stdio.h中】

1. 開啟檔案

fopen

 FILE *fopen(const char *path, const char *mode);

 a、FILE檔案指標

b、const char *path要開啟的檔案路徑

c、const char *mode開啟檔案方式(許可權)

mode說明:

開啟只讀檔案,該檔案必須存在。

r+ 開啟可讀寫的檔案,該檔案必須存在。

rb+ 讀寫開啟一個二進位制檔案,只允許讀寫資料。

rt+ 讀寫開啟一個文字檔案,允許讀和寫。

開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(EOF符保留)

a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的

EOF符不保留)

例:

  1. //開啟檔案
  2. FILE*file=NULL;//定義一個檔案指標
  3. file = fopen("./test.txt","w+");//fopen返回開啟檔案的指標

2、讀寫檔案

fread

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

引數說明:

size_t:讀了多少次

void *ptr:讀到的資料存放位置

size_t size:一次讀多少個位元組

size_t nmemb:讀多少次

FILE *stream:檔案指標,從這個檔案中讀

  1. //讀檔案
  2. char buf[128];
  3. ret =
    fread(buf,128,1, file);//從file讀到wbuf,讀一次,每次讀128個位元組

fwrite

size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

引數與fread類似.

  1. //把wbuf內容寫入檔案
  2. char wbuf[128];
  3. scanf("%s", wbuf);
  4. int ret = fwrite(wbuf, strlen(wbuf),1,file);//從wbuf寫資料到file,寫一次,每次寫wbuf資料的長度
3.關閉檔案 fclose int fclose(FILE *fp); 4.檔案定位 fseek int fseek(FILE *stream, long offset, int whence);

引數說明:

FILE *stream:要偏移的檔案指標

long offset:偏移量

int whence:參照物(有三個參照物,檔案頭(SEEK_SET),檔案尾(SEEK_END),當前位置(SEEK_CUR))

也就是將檔案指標移動到離參照物(頭,尾,當前)偏移量的地方。

  1. //把檔案指標移動到檔案開頭
  2. fseek(file,0, SEEK_SET);//以頭為參照物移動0位元組
ftell
long ftell(FILE *stream); 計算偏移量(計算檔案長度)返回值是long int型 
  1. //移動檔案指標到檔案尾
  2. int ret = fseek(file,0, SEEK_END);
  3. //計算偏移量--檔案大小
  4. long size = ftell(file);
void rewind(FILE *stream);
把檔案指標移到檔案頭 相當於 fseek(file,0, SEEK_SET);