1. 程式人生 > >Perl-19---檔案屬性操作函式

Perl-19---檔案屬性操作函式

一、檔案位置重定位函式:

1、rename()函式:檔案重新命名

$Ret  =  rename(OldName,NewName);

該函式用於把舊檔名OldName重新命名為一個新的名字NewName,或者是把檔案OldName轉移到指定目錄NewName下面;兩個引數都可以為字串或者表示式;如果OldName與NewName同為檔名或同為目錄名,而且OldName與NewName的目錄名完全相同,則該函式完成的式重新命名工作;如果OldName與NewName的檔名相同,但是路徑不同,則該函式完成的式檔案轉移工作;

呼叫成功,則返回非零值(真:1);呼叫失敗,則返回零值(假:0);

也就是說,重新命名或轉移檔案成功,則rename()函式返回非零值(真:1);重新命名或轉移檔案失敗,則rename()函式返回零值(假:0);

2、unlink()函式:刪除檔案

$UnLinkFileNumbers  =  unlink(FileList) ;

該函式用於刪除檔案;引數是一個檔名列表或者儲存一個檔名的簡單變數,函式返回值為實際刪除的檔案數目;此函式之所以稱為unlink而不是delete是因為unlink()函式實際上所做的是刪除檔案的連結,而不是真正地刪除檔案;因為Unix/Linux系統為每個檔案都設定了一個連結計數,每次刪除一個檔案時,實際上是刪除對該檔案的一個連結,把連結計數減1,只有當連結計數變為0時,作業系統才會真正地去刪除檔案;

函式呼叫成功,則返回實際刪除的檔案數目(非零,真);呼叫失敗,則返回零值(假:0);

也就是說,如果刪除檔案成功,則unlink()函式返回實際刪除的檔案數目(非零,真);刪除檔案失敗,則unlink()函式返回零值(假:0);

二、檔案的硬連線和符號連線

1、link()函式:

$Ret  =  link(File,HardLinkName);

該函式用於為檔案File建立一個硬連結HardLinkName;File是連結的源(被連結的檔案),HardLinkName則是新建立的連結名;當刪除File和HardLinkName這兩個名稱中的一個的時候,仍然有通過另外一個名稱來訪問到這個檔案的內容;

函式呼叫成功,則返回非零值(真:1) ;呼叫失敗,則返回零值(假:0);也就是說,如果建立到檔案File的硬連結HardLinkName成功,則link()函式返回非零值(真:1);如果建立到檔案File的硬連結HardLinkName失敗,則link()函式返回零值(假:0);

2、symlink()函式:

$Ret  =  symlink(File,SymLinkName);

該函式對現有的檔案File建立一個符號連結SymLinkName,即:這個符號連結僅僅指向檔名File,而並不是指向檔案File本身;引數何返回值與link()函式相同;當原始檔被刪除的時候,則所建立的符號連結不再可用,除非再建立一個與檔案File同名的檔案;

呼叫成功,則函式返回非零值(真:1);呼叫失敗,則返回零值(假:0);也就是說,建立到檔案File的符號連結SymLinkName成功的時候,symlink()函式返回非零值(真:1);建立到檔案File的符號連結SymLinkName失敗時,則symlink()函式返回零值(假:0);

3、readlink()函式:

$FileName  =  readlink(SymLinkName);

如果引數SymLinkName是一個符號連結檔案,則函式返回該符號連結所指向的實際檔案的檔名,否則返回空串;

三、檔案許可權許可函式

1、chmod()函式:

$Ret  =  chmod(Permissions,FileList);

該函式用於吧檔案列表FileList中的檔案的訪問許可權更改為引數Permissions所指定的許可權;

chmod()函式返回檔案列表FileList中已經被成功更改了訪問許可權的檔案的數量,沒有區分呼叫成功與否;

2、chown()函式:

$Ret  =  chown(NewUserID,NewGroupID,FileList);

用於更改檔案列表FileList中所有檔案的所有者;

NewUserID:新使用者ID(數字);
NewGroupID:新組ID(數字);-1表示保留原組;

FileList:將要被改變所有者的檔案的列表;

chown()函式返回檔案列表FileList中已經被成功更改了所有者的檔案的數量,沒有呼叫成功與否;

3、umask()函式:

OldMask  =  umask(NewMask);

該函式用於設定檔案的訪問許可權掩碼;這個函式接收一個新的引數掩碼NewMask,並返回當前正在使用的舊掩碼值OldMask;

四、其它屬性函式:

1、truncate()函式:

$Ret  =  truncate(File,Length);

該函式把引數File指定的檔案的長度減少到Length位元組。如果檔案File的長度本來就小於Length位元組,那麼該函式什麼都不做;其中引數File即可以是檔名,也可以是檔案控制代碼;

函式呼叫成功,則truncate()函式返回非零值(真:1);呼叫失敗,則返回空值(假);

2、stat()函式:

@FileStates  =  stat(File); 

該函式用於獲取檔案File的狀態;引數File既可以是檔名,也可以是檔案控制代碼;

呼叫成功,則返回檔案的屬性列表;呼叫失敗則返回空值;

stat()函式返回一個用於存放檔案屬性的列表,列表中元素的順序為:

FileStates[0]:檔案所在的裝置;

FileStates[1]:檔案的內部參考號(inode);

FileStates[2]:訪問許可權;

FileStates[3]:硬連線數;

FileStates[4]:擁有者的ID(數字);

FileStates[5]:所屬組的ID(數字);

FileStates[6]:裝置型別(如果File是裝置的話);

FileStates[7]:檔案大小(位元組數);

FileStates[8]:建立時間;

FileStates[9]:最後修改時間或最後狀態修改時間HH:MM:SS(00:00:00  ~  23:59:59);

FileStates[10]:最後訪問時間;

FileStates[11]:IO操作最佳塊大小;

FileStates[12]:分配給該檔案的塊數;

3、lstat()函式:

@FileStates  =  lstat(File);

該函式與stat()函式類似,但是區別是:該函式把引數File看作是符號連結;

呼叫成功,則返回檔案的屬性列表;呼叫失敗,則返回空值;

返回的屬性列表的結構與stat()返回的屬性列表的結構相同;

4、time()函式:

返回從1970年1月1日0時0分0秒開始到當前時間之間累計的秒數;

$CurrentTime =  time();

5、gmtime()函式:

@TimeElemList  =  gmtime(TimeValue); 

該函式把time()、stat()、以及檔案測試操作符-A和-M返回的時間轉換為格林威治時間,並返回一個含有時間元素的列表:@TimeElemList ;

返回的時間元素的列表@TimeElemList 中的元素順序為:

TimeElemList[0]:秒 (0 ~ 59);

TimeElemList[1]:分(0 ~ 59);

TimeElemList[2]:時(0 ~ 23) ;

TimeElemList[3]:日(1 ~ 31);

TimeElemList[4]:月(0 ~ 11:一月 ~  十二月);

TimeElemList[5]:年;

TimeElemList[6]:星期;

TimeElemList[7]:

TimeElemList[8]: