第九章(1)文件系統處理
在php中保存的方式有兩種:1.寫入文件. 2.寫入數據庫.
php對文件系統的操作是基於Unix或Linux系統的.
fopen(1.目標文件名稱 2.文件打開方式) 打開文件的函數.
目標文件名稱:
windows : C:\test\test.txt C:\test/test.txt
linux : /root/test/test.txt
文件打開方式:
r :以讀的方式打開文件.
r+ :以讀和寫的方式打開文件,並將文件指針指向文件開始.
w :以寫的方式打開文件,如果該文件包含任何數據,則數據將丟失,如果文件不存在,則創建文件.
w+ :以讀和寫的方式打開文件,如果該文件包含任何數據,則數據將丟失,如果該文件不存在,則創建文件.
a :以寫的方式打開文件,將文件指針指向末尾,如果該文件不存在,則創建文件.
a+ :以讀和寫的方式打開文件,將文件指針指向文件末尾,如果該文件不存在,則創建文件.
x :創建並以寫入方式打開,將文件見指針指向文件頭,如果文件已存在,則fopen()調用失敗返回FALSE,並 生成一條E_WARNING級別的錯誤信息,如果文件不存在則嘗試創建文件,這個參數僅能用於本地文件.
x+ :創建並以寫入方式打開,其它與x的功能完全相同.
fwrite(1.目標文件名稱 2.要寫入的內容 3.寫入的長度) 寫入文件的函數.
fclose(目標文件名稱) 關閉文件的函數.
fread(1.目標文件名稱 2.讀取長度) 讀取文件的函數.<如果要讀取全文,可以使用filesize(目標文件名稱) 獲取全文的長度>
fgets(1.目標文件名稱 2.可選參數,讀取一行裡面的長度) 讀取文件裡面一行的函數.
fgetc(目標文件名稱) 讀取文件裡面一個字符的函數.
file(目標文件名稱) 不用打開和關閉就可以直接讀取文件的函數,但返回的是以換行為單位的數組.
readfile(目標文件名稱) 不用打開和關閉文件,直接輸出目標文件裡面的所有內容的函數.
用文件寫入和文件讀取做計數器的實例:
$jishu="jishu.txt";
if(!file_exists($jishu))
{
$kjs = fopen($jishu,"w");
fwrite($kjs,0);
fclose($kjs);
}
function kaishi($jishu)
{
$js = fopen($jishu,"r");
$du = fread($js,8);
fclose($js);
$du += 1;
echo "你是本站的第".$du."位訪客!!!";
$xie = fopen($jishu,"w");
fwrite($xie,$du);
fclose($xie);
}
kaishi($jishu);
輸出結果:打開的計數器被訪問了幾次就會輸出幾.
file_get_contents(目標文件名稱) 不用打開和關閉文件就可以直接讀取文件的函數,但將整個文件返回一個字符串.
file_put_contents(1.目標文件名稱 2.要寫入的內容) 不用打開和關閉文件就可以直接寫入文件的函數.
flock(1.目標文件名稱 2.選擇以下參數) 文件鎖定的函數.
鎖定文件的參數可選:
LOCK_SH :共享鎖定,讀取文件的時候使用.
LOCK_EX :獨占鎖定,寫入文件的時候使用.
LOCK_UN :釋放鎖定.
LOCK_NB :附加鎖定,避免文件同時被多人鎖定的時候使用.
ftell(目標文件名稱) 返回文件指針當前位置的函數.
fseek(1.目標文件名稱 2.移動的字節數 3.起始位置選擇參數) 移動文件指針到指定位置的函數.
起始可選擇參數有:
SEEK_SET :起點位置 SEEK_CUR :當前位置 SEEK_END :末尾位置
rewind(目標文件名稱) 移動文件指針到文件開頭的函數.
cpoy(1.目標文件名稱 2.拷貝到的文件名稱) 拷貝文件的函數.
unkink(目標文件名稱) 刪除文件的函數.
rename(1.目標文件名稱 2.新文件名稱) 文件的重命名函數.
ftruncate(1.目標文件名稱 2.要截取的長度) 截取文件內容的函數.
filectime(目標文件名稱) 獲取文件創建時間的函數.
filemtime(目標文件名稱) 獲取文件更改時間的函數.
fileatime(目標文件名稱) 獲取文件上一次訪問時間的函數.
file_exists(目標文件名稱) 判斷文件或目錄是否存在的函數.
filesize(目標文件名稱) 獲取文件大小的函數.
filetype(目標文件名稱) 獲取文件類型的函數.
is_dir(目標文件名稱) 判斷文件是否是目錄的函數.
is_file(目標文件名稱) 判斷文件是否是正常文件的函數.
is_link(目標文件名稱) 判斷文件是否是符號連接文件的函數.
is_executable(目標文件名稱) 判斷文件是否是可以執行的文件的函數.
is_readable(目標文件名稱) 判斷文件是否是可讀文件的函數.
is_writable(目標文件名稱) 判斷文件是否是可寫文件的函數.
chmod(1.目標文件名稱 2.權限長度) 修改文件權限的函數.
chown(1.目標文件名稱 2.要擁有者的ID) 修改文件擁有者的函數.
chgrp(1.目標文件名稱 2.要擁有組的ID) 修改文件擁有組的函數.
fileowner(目標文件名稱) 獲取文件擁有者的函數.
filegroup(目標文件名稱) 獲取文件擁有組的函數.