檔案操作是每個語言必須有的,不僅僅局限於PHP,這裡我們就僅用PHP進行講解
php的檔案進階操作和檔案上傳執行個體我放在文章的最後部分。--以後我還會給大家寫一個PHP類似於網盤操作的例子
注意:閱讀此文章,必須的備一個 《PHP中文手冊》或者其它可以查詢PHP函數的手冊 因為文章有大量的樣本,但是為了節約篇幅和時間,所以請大家自行查閱PHP手冊,以明白函數的具體作用
1、php開啟檔案和關閉檔案
用到的函數 fopen() 、fclose() 註:開啟的檔案一定要關閉! 具體函數參數請查閱php手冊
執行個體:
View Code
fopen()函數在php5中也支援url格式:
View Code
2、PHP的檔案讀寫
讀操作-
用到的函數 readfile()、file()、file_get_contents()、fgets()、fgetss()、fgetc()
樣本中的檔案位置請根據自己的檔案變更,不要糾結檔案位置和檔案名稱什麼的。重點在學習
檔案測試
| 使用 readfile()函數讀取檔案內容: |
|
| 使用 file()函數讀取檔案內容: |
"; } ?> |
| 使用 file_get_contents()函數讀取檔案內容: |
|
| 使用fgets()函數: |
|
| 使用fgetss()函數: |
|
| 使用fgetc()函數: |
|
View Code
寫操作-
用到的函數 fwrite()、 file_put_contents()
"; echo fread($fp,filesize($filename)); //輸出其餘的檔案內容 */ $filepath = "05.txt"; $str = "此情可待成追憶 只是當時已惘然
"; echo "用 fwrite() 函數寫入檔案: "; $fopen = fopen($filepath,"wb") or die("檔案不存在"); fwrite($fopen,$str); fclose($fopen); readfile($filepath); echo "用 file_put_contents() 函數寫入檔案: "; file_put_contents($filepath,$str); readfile($filepath);?>
View Code
3、php檔案本身的操作
本樣本只是列舉函數,請不要直接運行。運行前請根據自己的需求更改
View Code
===================================================================
一、php目錄操作
和檔案操作類似,也要開啟關閉目錄 用opendir()、和closedir()函數進行開啟和關閉目錄
View Code
二、php目錄的遊覽
核心函數 scandir()
"; } } else { echo "目錄路徑錯誤!"; }?>
View Code
三、php目錄的其他動作,擷取磁碟目錄大小,建立刪除目錄等等
本樣本只是列舉函數,請不要直接運行。運行前請根據自己的需求更改
"; chdir("../"); //更改為返回上一級 echo getcwd(); //重新擷取目前的目錄 /*用disk_free_space()函數 返回目錄中的可用空間*/ echo disk_free_space("D:/")/pow(1024,3); //這裡換算成了G、預設是以位元組顯示的 /*用disk_total_space()函數 返回目錄中的可用空間*/ echo disk_total_space("D:/")/pow(1024,3); //這裡換算成了G、預設是以位元組顯示的 /*關於PHP5以前的老遊覽目錄的方法 我就不列舉了,這裡僅僅給出函數名: readdir()、rewinddir()*/?>
View Code
====================================================================
檔案的進階運用
檔案指標:
"; //輸出總位元組數 $fopen = fopen($filename,"rb"); //開啟檔案 , 以唯讀二進位檔案格式的去 echo "初始指標位置是: ".ftell($fopen)."
"; //輸出指標位置 fseek($fopen,3); //移動指標 echo "使用 fseek() 函數後指標位置: ".ftell($fopen)."
"; //輸出移動後的指標位置 echo "輸出當前指標後面的內容: ".fgets($fopen)."
"; //輸出從當前指標到行尾的內容 if(feof($fopen)) //判斷指標是否指向檔案末尾 { echo "當前指標指向檔案末尾: ".ftell($fopen)."
"; //如果指向了檔案尾,則輸出指標位置 } //使用rewind() 函數返迴文檔流的開頭 --一旦流讀到末尾再度就讀不到資料了, //所以這裡要重新指向一個檔案的指標 rewind($fopen); //查看使用 rewind() 函數後指標的位置 echo "使用 rewind() 函數後指標的位置: ".ftell($fopen)."
"; echo "輸出前 6 個位元組的內容: ".fgets($fopen,6); //輸出前6個位元組的內容 fclose($fopen); //關閉檔案 } else { echo "檔案不存在!"; }?>
View Code
檔案鎖定:
View Code
====================================================================
檔案的上傳
擷取上傳檔案的資訊:
無標題文檔
$value) //使用foreach迴圈輸出上傳檔案資訊的名稱和值 { echo $name.'='.$value."
"; } } ?>
View Code
真正的檔案上傳(從臨時到指定位置):
無標題文檔 0) //判斷檔案大小 { //上傳檔案 move_uploaded_file($fileinfo['tmp_name'],"upfile/".$fileinfo['name']); echo "檔案上傳成功!"; } else { echo "檔案太大或者未知"; } } ?>
View Code
多檔案上傳:
無標題文檔 "; } } } ?>
View Code