Linux思想即,Linux系統下一切皆文件。
一、對文件操作的幾個函數
1.打開文件open函數
int open(const char *path, int oflags);
int open(const char *path, int oflags,mode_t mode);
– 參數path表示:路徑名或者文件名。路徑名為絕對路徑名。
– 參數oflags表示:打開文件所采取的動作。
下面幾個為常用參數:
O_RDONLY文件只讀;O_WRONLY文件只寫;O_RDWR文件可讀可寫;O_NOCTTY如果路徑指向終端,則不將設備作為此進程的控制終端;O_NDELAY非阻塞方式操作文件。
– mode表示:設置創建文件的權限。權限的宏定義很麻煩,可以直接用數字替代
– 返回值:出錯返回-1;否則返回文件句柄
2.打開文件creat函數(其主要作用為創建文件):
• int creat(const char * pathname, mode_t mode);
– 參數path表示:路徑名或者文件名。路徑名為絕對路徑名。
– 參數oflags表示:打開文件所采取的動作。
• O_RDONLY文件只讀;O_WRONLY文件只寫;O_RDWR文件可讀可寫
3.關閉文件close函數:
int close(int fd);
參數為打開文件的句柄
4.寫文件write函數:
• ssize_t write(int fd, const void *buf, size_t count);
– 參數fd表示:使用open 函數打開文件之后返回的句柄。
– 參數*buf表示:寫入的數據
– 參數count表示:最多寫入字節數
– 返回值:出錯-1,;其它數值表示實際寫入的字節數
5.讀文件read函數:
• ssize_t read(int fd,void *buf,size_t len);
– 參數fd:使用open 函數打開文件之后返回的句柄
– 參數*buf:讀出的數據保存的位置
– 參數len:每次最多讀len 個字節
– 返回值:錯誤返回-1,執行成功返回實際讀取值
二、代碼編寫
對文件的操作一般必需要用到以下幾步:
1、對文件的IO操作需要的頭文件基本是一樣的,都需要用到以下幾個頭文件。實際編程中我們可以從終端里通過man命令查找然后復制過來直接用。例如,在Ubuntu終端里輸入man 2 read 后就可以查到關於read的用戶手冊,其中對read的詳細介紹就包括頭文件等等。其他函數用相同的方法都可查詢到。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
2、在主函數里面定義一個整形的變量,來保存open返回的句柄值;
3、定義字符串,保存文件路徑;
4、為后面要用到的讀寫函數創建緩沖區數組,或ssize_t變量
5、采用一個if語句判斷打開文件是否正確,正確返回句柄值,不正確打印提示信息;
6、文件打開正確后,調用相應的讀寫函數,傳入正確參數進行相應的讀寫操作。
7、文件進行讀寫完操作后一定要通過close函數關閉,否則文件一直被占用就會影響其他程序的運行。
三、運行結果
1、open運行結果
/
2、creat運行結果
3、read運行結果
4、write運行結果
用vi打開/bin下的testwrite文件可以看到如下圖所示