1. 程式人生 > >文件系統操作

文件系統操作

模式 off ets alt 需要 width c庫 訪問權限 fclose

一、文件操作系統調用

1 /* 創建
2  * 參數:
3  *        @filename:文件名
4  *        @mode:指定新建文件的存取權限,它同 umask 一起決定文件的最終權限(mode & umask),umask 代表了文件在創建時需要去掉的一些存取權限。
5  *                umask 可通過系統調用 umask() 來改變
6  */
7 int creat(const char *filename, mode_t mode);
8 /* 該調用將 umask 設置為 newmask,然後返回舊的 umask,它只影響讀、寫和執行權限 
*/ 9 int umask(int newmask);
1 /* 文件打開,此函數有兩種形式
2  *         pathname 為要打開的文件名(包含路徑名稱,默認是在當前路徑下)
3  *        flags 為文件打開標誌
4  *        mode 為文件訪問權限
5  */
6 int open(const char *pathname, int flags);
7 int open(const char *pathname, int flags, mode_t mode);

  flags 文件打開標誌:

  技術分享圖片

  mode 文件訪問標誌:

  技術分享圖片

1 /*
文件讀寫 2 * buff 為指向緩沖區的指針 3 * length 為緩沖區的大小(以字節為單位) 4 */ 5 int read(int fd, const void *buf, size_t length); //實現從文件描述符 fd 所指定的文件中讀取 length 個字節到 buf 所在的緩沖區中,返回實際讀取的字節數 6 int write(int fd, const void *buf, size_t length); //實現把 length 個字節從 buf 指向的緩沖區中寫到文件描述符 fd 所指向的文件中,返回實際寫入的字節數
1
/* 定位,隨機指定位置進行讀寫,此函數將文件讀寫指針相對 whence 移動 offset 個字節,操作成功時,返回文件指針相對於文件頭的位置 */ 2 int lseek(int fd, offset_t offset, int whence);

  參數 whence 的值如下:

  技術分享圖片

  技術分享圖片

1 /* 關閉 */
2 int close(int fd);

二、C庫函數調用

1 /* 打開,用於打開指定文件,mode 為打開模式 */
2 FILE fopen(const char *path, const char *mode);

  打開模式的標誌如下:

  技術分享圖片

  b 用於區分二進制文件和文本文件,但Linux中不區分二進制文件和文本文件

 1 /* 讀寫 */
 2 int fgetc(FILE *stream);
 3 int fputc(int c, FILE *stream);
 4 char *fgets(char *s,int n, FILE *stream);
 5 int fputs(const char *s,FILE *stream);
 6 int fprintf(FILE *stream, const char *format, ...);
 7 int fscanf(FILE *stream, const char *format, ...);
 8 //實現從流(stream)中讀取 n 個字段,每個字段為 size 個字節,並將讀取的字段放入 ptr 所指的字符數組中,返回實際已讀取的字段數
 9 //當讀取的字段數小於 num 時,可能是在函數調用時出現了錯誤,也可能是讀到了文件末尾。因此要通過調用 feof() 和 ferror() 來判斷
10 size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
11 //實現從緩沖區 ptr 所指的數組中把 n 個字段寫到流(stream)中,每個字段長為 size 個字節,返回實際寫入的字段數
12 size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);
13 
14 /* 讀寫過程中的定位函數 */
15 int fgetpos(FILE *stream, fpos_t *pos);
16 int fsetpos(FILE *stream, const fpos_t *pos);
17 int fseek(FILE *stream, long int offset, int whence);
1 /* 關閉 */
2 int fclose(FILE *stream);

  技術分享圖片

  技術分享圖片

文件系統操作