在過去的練習裡面,程式只在線上進行運算並且即時顯示
但是在更多時候我們需要將資料儲存在檔案內部,例如門禁刷卡
要知道哪張卡在幾點幾分刷進或是刷出,就會使用到一隻log檔來紀錄資料
以下是一些常用的檔案處理函數
首先我們要先講開啟模式,就是開啟檔案時賦予的權限,還有檔案若不存在的處理方式
如果操作成功的話,會回傳一個「handle」值,失敗則傳回「 false 」
回傳的資料型態為整數; 成功回傳0;
否則,回傳-1 此外,若碰到檔尾(EOF)時,不會當作失敗
回傳的資料型態為整數; 成功回傳寫入的字元個數; 失敗則回傳FALSE
回傳的資料型態為字串,回傳值就是讀出的資料
回傳的資料型態為布林值; 成功回傳TRUE;失敗回傳FALSE
這邊要特別記住的是函數的使用順序!
有開啟檔案,就必須要關閉。否則後續在使用上會出問題
「$fileopen = fopen($file, " w+ ")」本 身有回傳值
可以作為除錯之用,如果成功開啟檔案則回傳true,反之則回傳false
這邊做一個練習是
檔案一樣放在github頁面上,檔名為file_practice.php
file_get_contents() 直接讀取檔案
成功則回傳內容字串,失敗則返回 FALSE。
file_put_contents()用於直接寫入檔案
成功則回傳寫入到文件內數據的字節數,失敗則回傳FALSE
以上兩個函式,尤其是file_put_contents()在業界很常使用
他的功能就是fopen() + fwrite() + fclose(),三位一體的概念
所以業界比較常使用這個方法。
但是在更多時候我們需要將資料儲存在檔案內部,例如門禁刷卡
要知道哪張卡在幾點幾分刷進或是刷出,就會使用到一隻log檔來紀錄資料
以下是一些常用的檔案處理函數
- fopen: 開啟檔案的函數
- fseek: 移動檔案讀寫指標的函數
- fwrite: 將資料寫入檔案的函數
- fread: 將資料從檔案讀出的函數
- fclose: 關閉檔案的函數
另外還有兩個更常用的函數
- file_get_contents: 直接讀取檔案
- file_put_contents: 直接寫入檔案
檔案開啟模式
首先我們要先講開啟模式,就是開啟檔案時賦予的權限,還有檔案若不存在的處理方式
a :附加檔案方式開啟,屬性為「寫入」
由檔案尾部加入;如果檔案不存在,則建立。
a+:附加檔案方式開啟,屬性為「可讀可寫」
由檔案尾部加入;如果檔案不存在,則建立。
r :「唯讀」,檔案必須存在
r+:「可讀可寫」,檔案必須存在
w :「唯寫」,並將檔案清除後重新寫入 如果檔案不存在,則建立檔案。
w+:「可讀可寫」,將檔案清除後重新寫入
若檔案不存在則 建立檔案
※HINT:
- r 家族:檔案必須存在
- w 家族:會把檔案內容全部砍掉重練
- a家族:把檔案繼續往下寫
- 「+」號家族:都是可讀可寫。
開啟檔案
fopen($fileName,OpenMode)
如果操作成功的話,會回傳一個「handle」值,失敗則傳回「 false 」
移動檔案讀寫指標
fseek($fileopen,$byte_num)
- $fileopen:欲處理檔案的handle值 (就是剛剛 fopen 回傳的東西)
- $byte_num:從頭起算的位元數,0就是開頭啦
回傳的資料型態為整數; 成功回傳0;
否則,回傳-1 此外,若碰到檔尾(EOF)時,不會當作失敗
資料寫入檔案
fwrite($fileopen,$data[,$len])
- $fileopen:欲處理檔案的handle值 (看到沒,又扯到fopen了,要不要設成變數?要!)
- $data:欲寫入檔案中的資料
- $len:欲寫入的字元個數,此參數可省略
回傳的資料型態為整數; 成功回傳寫入的字元個數; 失敗則回傳FALSE
從檔案讀出資料
fread($fileopen,$length)
- $fileopen:欲處理檔案的handle值 (又是我 handle值)
- $length:欲從檔案中讀出的字元個數,全部讀取可以用filesize($filename)
回傳的資料型態為字串,回傳值就是讀出的資料
關閉檔案
fclose($fileopen)
- $fileopen:欲關閉檔案的handle值 (....不多做說明了)
回傳的資料型態為布林值; 成功回傳TRUE;失敗回傳FALSE
這邊要特別記住的是函數的使用順序!
- fopen():開啟檔案
- fseek():移動檔案指標
- fread():讀取資料 / fwrite():寫入資料
- fclose():關閉檔案
有開啟檔案,就必須要關閉。否則後續在使用上會出問題
確定是否有開檔成功
「$fileopen = fopen($file, " w+ ")」本 身有回傳值
可以作為除錯之用,如果成功開啟檔案則回傳true,反之則回傳false
這邊做一個練習是
將一個學生的成績寫入檔案: grade.txt
分別寫入學生的姓名、國文成績、英文成績及數學成績
每個欄 位以逗號「,」分隔
檔案一樣放在github頁面上,檔名為file_practice.php
※補充:
file_get_contents( string filename): 直接讀取檔案
file_put_contents ( string filename, string data): 直接寫入檔案
file_get_contents() 直接讀取檔案
成功則回傳內容字串,失敗則返回 FALSE。
file_put_contents()用於直接寫入檔案
成功則回傳寫入到文件內數據的字節數,失敗則回傳FALSE
以上兩個函式,尤其是file_put_contents()在業界很常使用
他的功能就是fopen() + fwrite() + fclose(),三位一體的概念
所以業界比較常使用這個方法。
留言
張貼留言