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]: