<?php $file = "./test/f1.php"; //===============判斷文件能不能讀取(權限問題),或者存不存在 if (is_readable($file) == false) { echo "<br/>"; die('no'); } //===============判斷文件存不存在 if (file_exists($file) == false) { echo "<br/>"; die('no file'); } //======================================================讀取文件內容 //方法一 $dataString = file_get_contents($file); echo "<br/>1"; var_dump($dataString); echo htmlentities($dataString); //方法二 $fJuBing = fopen($file, 'r'); //創建指定文件讀操作的句柄 //整個文件一次全部讀取,如果文件內容空會報錯 $dataString = fread($fJuBing, filesize($file)); //或者逐行讀取 while ( ! feof ( $fJuBing ) ) { // feof() 函數檢測是否已到達文件末尾。如果文件指針到了末尾或者出錯時則返回 TRUE。否則返回FALSE(包括 socket 超時和其它情況)。 $lineStr = fgets ( $fJuBing ); // fgets(file,length) 從文件指針中讀取一行並返回長度最多為 length - 1 字節長度的字符串,包括換行符。如果沒有指定 length,則默認為 1K,或者說 1024 字節。 $lineStr = str_replace("\n","",str_replace("\r","",$lineStr));//去掉每行的回車符(\r)換行符(\n) echo $lineStr; } fclose($fJuBing); echo "<br/>2"; var_dump($dataString); echo htmlentities($dataString); /* fopen()方法的第二個參數可以選擇以下值 "r" 只讀方式打開,將文件指針指向文件頭。 "r+" 讀寫方式打開,將文件指針指向文件頭。 "w" 寫入方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。 "w+" 讀寫方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。 "a" 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。 "a+" 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。 "x" 創建並以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。 這和給底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。 此選項被 PHP 4.3.2 以及以后的版本所支持,僅能用於本地文件。 "x+" 創建並以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。 這和給底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。 此選項被 PHP 4.3.2 以及以后的版本所支持,僅能用於本地文件。 */ //方法三 $dataString = implode('', file($file)); echo "<br/>3"; var_dump($dataString); echo htmlentities($dataString); //===============判斷文件能不能寫入 if (is_writable($file) == false) { echo "<br/>"; die("can`t write"); } //======================================================往文件中寫入內容,原內容將被覆蓋,並且如果文件不存在將嘗試創建 $writeData = 'i want'; //方法一 file_put_contents($file, $writeData); //或者加參數,無該文件創建,有則在文件內容結尾處寫入新內容 //file_put_contents($file, $writeData, FILE_APPEND); //方法二 $fJuBing = fopen($file, 'w'); //創建指定文件寫操作的句柄 fwrite($fJuBing, $writeData);// 第一次往打開的指針文件中寫入內容時會替換指針文件中原有內容,在該文件指針關閉前,fwrite函數再添加內容會在已添加內容之后 fclose($fJuBing); //===============有時執行寫入操作時需要鎖定文件 $fJuBing = fopen($file, 'w'); if (flock($fJuBing, LOCK_EX)) { fwrite($fJuBing, $writeData); //釋放鎖定 flock($fJuBing, LOCK_UN); } else { echo "<br/>"; echo "can`t locking file!"; } fclose($fJuBing); /* flock()方法的第二個參數可以選擇以下值 LOCK_SH,(PHP 4.0.1 以前的版本中設置為 1)共享鎖定(讀取的程序)。 LOCK_EX,(PHP 4.0.1 以前的版本中設置為 2)獨占鎖定(寫入的程序)。 LOCK_UN,(PHP 4.0.1 以前的版本中設置為 3)釋放鎖定(無論共享或獨占)。 LOCK_NB,(PHP 4.0.1 以前的版本中設置為 4)使flock()在鎖定時不堵塞。 */ //======================================================刪除文件 /* $file2 = "./test/f2.php"; if (unlink($file2)) {//有時文件不存在刪除時會報錯,最好加上@變成@unlink($file2) echo "<br/>"; echo "file has been delect"; } else { echo "<br/>"; echo "file can`t been delect"; } */ //======================================================復制文件 $file = "./test/f1.php"; $newfile = "./test/f2.php"; #這個文件父文件夾必須能寫,如果該文件不存在則嘗試創建再復制 if (copy($file, $newfile)) { echo "<br/>"; echo 'ok'; } //===============獲取文件最近修改時間,返回的是unix的時間戳,這在緩存技術常用 echo "<br/>"; //echo date('r', filemtime($file)); //===============(非windows系統),fileperms()獲取文件的權限 echo "<br/>"; echo substr(sprintf('%o', fileperms($file)), -4); //===============filesize()返回文件大小的字節數: echo "<br/>"; echo filesize($file); //===============以數組形式返回文件的全部信息stat()函數: echo "<br/>"; var_dump(stat($file)); $dir = "./test/t1"; //===============判斷該路徑文件夾是否存在 if (is_dir($dir) == false) { echo "<br>"; echo "no"; } //======================================================創建文件夾 //第二個參數可以不寫,默認是最大權限 0777 //不能一次連續創建,即要創建的路徑文件夾的上級文件夾必須存在 mkdir($dir, 0777); //或者創建完再賦權限,有時Linux需要如此創建文件夾 //mkdir($dir); //chmod($dir, 0777); //===============返回當前路徑文件夾的文件夾名 echo "<br>"; echo basename($dir); //===============返回去掉路徑中最后一個文件夾名或文件名后的路徑,成功返回字符串,否則返回 FALSE 。 echo "<br>"; echo dirname($dir); //===============返回給定目錄文件夾或文件的絕對路徑 echo "<br>"; echo realpath($dir); //===============獲取指定路徑文件夾下所有文件夾名,文件名 $dirJuBing = opendir($dir); //創建一個打開指定文件夾的句柄 while ($fileName = readdir($dirJuBing)) { //循環瀝遍返回該目錄文件夾下每一個文件名文件夾名的字符串,前兩個返回的字符串是"."和".." ,就算是空文件夾也返回這兩個字符串 echo "<br/>"; echo $fileName; } closedir($dirJuBing); //======================================================重命名文件夾(或文件) //或者將指定路徑文件夾(或文件)移動並重命名成另一路徑文件夾(或文件),只能文件夾對文件夾,文件對文件 $dir = "./test/t1"; $newDirName = "./test/t2/t3"; rename($dir, $newDirName); //原"./test"下的t1文件夾移動並重命名成"./test/t2"下的t3文件夾 //======================================================刪除指定路徑文件夾 //rmdir($dir); ?>