5 檔案管理

2021-07-11 15:58:41 字數 2855 閱讀 1347

1 檔案的基本概念

在unix/linux系統中,幾乎所有的一切都可以看作檔案,因此,對於檔案的操作適用於各種輸入輸出裝置等等,當然目錄也可以看作檔案

如:/dev/null  => 空裝置

echo hello > /dev/null

=> 表示丟棄處理的結果

cat /dev/null > a.txt

=> 表示清空檔案a.txt

2 檔案相關的讀寫函式(重點)

複習標c: 

fopen()/fclose()/fread()/fwrite()/fseek()   

(1)open函式

#include

#include

#include

int open(const char *pathname, int flags);//開啟已經存在的檔案

int open(const char *pathname, int flags, mode_t mode);//開啟新檔案時用的,因為只有建立新檔案時才需要加mode引數

int creat(const char *pathname, mode_t mode);//建立乙個檔案

以第二個open函式為例,解析如下:

第乙個引數:字串形式的檔案路徑和檔名

第二個引數:操作標誌(針對於生成的檔案描述符而說的)

必須包含以下訪問模式中的一種:

o_rdonly - 唯讀

o_wronly - 只寫

o_rdwr - 可讀可寫

還可以按位或以下的標誌值:

o_creat - 檔案不存在則建立,存在則開啟(單純的開啟)

o_excl - 與o_creat搭配使用,如果檔案存在則open/建立失敗

o_trunc - 若檔案存在、且開啟許可權中有寫,則將檔案中的內容清空

第三個引數:操作模式,許可權(針對於檔案而說的)

當建立新檔案時,需要指定的檔案許可權,

如:0644 => rw-r--r--    

返回值:成功返回新的檔案描述符,失敗返回-1

描述符就是乙個小的非負整數,用於表示當前檔案

函式功能:主要用於開啟/建立 乙個 檔案/裝置

擴充套件:    執行命令:ls -l 01str.c的結果如下:

結果解析: 

-         rw-      rw-    r--            1  

屬主許可權 屬組許可權 其他使用者許可權 硬鏈結數

tarena   tarena    1076     6月  4 10:43 

屬主名稱  屬組名稱  檔案大小  檔案最後一次修改時間

01str.c

檔名屬組使用者:由於在linux系統中用許多的使用者,然後系統會將使用者分組,和屬主使用者屬於同一組的使用者叫做屬組使用者。

屬主使用者:linux是個多使用者多工的分時作業系統,所有乙個要使用系統資源的使用者都必須先向系統管理員申請乙個賬號,然後以這個賬號的身份進入系統。當前的使用者是屬主

其中:檔案型別中:

-  表示普通檔案  

d  表示目錄檔案

檔案許可權中:

r  表示讀許可權

w  表示寫許可權

x  表示執行許可權

-  表示沒有此許可權

(2)close函式

#include

int close(int fd);

函式功能:

主要用於關閉引數fd指定的檔案描述符,也就是讓描述符fd不再關聯任何乙個檔案,以便於下次使用

(3)read函式

#include

ssize_t read(int fd, void *buf, size_t count);

第乙個引數:檔案描述符(從**讀)

第三個引數:讀取的資料大小

返回值:成功返回讀取到的位元組數,返回0表示讀到檔案尾

失敗返回-1

函式功能:表示從指定的檔案中讀取指定大小的資料

(4)write函式

#include

ssize_t write(int fd,const void *buf,size_t count);

第乙個引數:檔案描述符(寫入到**去)

第三個引數:寫入的資料大小

返回值:成功返回寫入的資料大小,0表示沒有寫入,

失敗返回-1

函式功能:表示將指定的資料寫入到指定的檔案中

注意:read和write函式一般預設以二進位制形式進行讀寫操作

練習:(1)vi 06emp_write.c檔案,定義乙個員工的資訊並且進行初始化,將該員工的資訊寫入到檔案emp.dat中,員工資訊有:員工的編號、姓名、年齡、薪水

(2)vi 06emp_read.c檔案,讀取檔案emp.dat中的員工資訊,然後將員工資訊列印出來

(5)lseek函式

#include

#include

off_t lseek(int fd,off_t offset,int whence);

第乙個引數:檔案描述符(表示在哪個檔案中操作)

第二個引數:偏移量(正數表示向後偏移,負數向前偏移)

第三個引數:起始位置(從什麼地方開始偏移)

seek_set - 檔案開頭位置

seek_cur - 檔案當前位置

seek_end - 檔案結尾位置

返回值:成功返回距離檔案開頭位置的偏移量,

失敗返回-1

函式功能:主要用於調整檔案的讀寫位置

注意:檔案末尾位置指的是檔案中最後乙個字元的下乙個位置

0605 檔案管理

檔案定義 檔案是一組相似記錄的集合,它被使用者和應用程式視為乙個實體,並可以通過名字訪問。按照性質用途 系統檔案 只允許系統呼叫來執行它們 庫檔案 允許讀取,執行,不能修改 使用者檔案 所有者可以使用 按照組織形式,可分為 普通檔案,目錄檔案,特殊檔案 所有的輸入輸出裝置被看成特殊檔案 作業系統中與...

5 檔案許可權設定

注 test1 使用者預設屬於test1 使用者組 建立test檔案 內含test1.txt 和 test2.txt chgrp test1 test1.txt 修改test1.txt 使用者組屬於test1 chgrp r test1 test 遞迴修改test檔案 包含內部檔案 使用者組屬於te...

5 檔案許可權操作

1 include 2 int stat const char path,struct stat buf 函式功能 獲得指定pat 件的所有資訊儲存於buf結構中 返回值 操作成功返回0,失敗返回 1 stat結構體 struct stat 與stat類似功能的函式fstat include int...