以下為檔案讀寫操作的 基本php函式及模式(看不明白就記住他)
關於模式:
'r' - 唯讀方式開啟, 檔案指標置於檔案頭
'r+' - 讀寫方式開啟,檔案指標置於檔案頭
'w' - 只寫開啟,檔案指標置於檔案頭, 檔案被剪下為0位元組, 如果檔案不存在, 嘗試建立檔案
'w+' - 讀寫開啟,檔案指標置於檔案頭, 檔案大小被剪下為0位元組,如果檔案不存在, 嘗試建立檔案
'a' - 只寫方式開啟,檔案指標置於檔案尾,如果檔案不存在,嘗試建立檔案
'a+' - 讀寫開啟,檔案指標置於檔案尾,如果檔案不存在, 嘗試建立檔案
fgets — 從檔案指標中讀取一行
fgetss — 從檔案指標中讀取一行並過濾掉 html 標記
file — 把整個檔案讀入乙個陣列中
fgetcsv — 從檔案指標中讀入一行並解析 csv 字段
你一定用過「網路text **:
翻譯: 無傷
讀檔案:
<?php
$file_name
= "data.dat";
// 要讀取的檔案的絕對路徑: homedata.dat
$file_pointer
= fopen
( $file_name
, "r");
// 開啟檔案,"r" 是一種模式,或者說我們要進行的操作方法,詳見本文後面的介紹
$file_read
= fread
( $file_pointer
, filesize
( $file_name
));// 通過檔案指標讀取檔案內容
fclose
( $file_pointer
);
// 關閉檔案
"讀取到的檔案內容是: $file_read";
// 顯示檔案內容
?>
寫檔案:
<?php
$file_name
= "data.dat";
// 絕對路徑: homedata.dat
$file_pointer
= fopen
( $file_name
, "w");
// "w"是一種模式,詳見後面
fwrite
( $file_pointer
, "what you wanna write");
// 先把檔案剪下為0位元組大小, 然後寫入
fclose
( $file_pointer
);
// 結束
"資料成功寫入檔案";
?>
追加到檔案後面:
<?php
$file_name
= "data.dat";
// 絕對路徑: homedata.dat
$file_pointer
= fopen
( $file_name
, "a");
// "w"模式
fwrite
( $file_pointer,)
;
// 不把檔案剪下成0位元組, 把資料追加到檔案最後
fclose
( $file_pointer
);
// 結束
"資料成功追加到檔案";
?>
以上只是簡單介紹,下面我們要討論一些更深層的。
有時候會發生多人寫入的情況(最常見是在流量較大的**),會產生無用的資料寫入檔案, 例如:
info.file檔案內容如下 ->
|1|mukul|15|male|india (n)
|2|linus|31|male|finland (n)
現在兩個人同時註冊,引起檔案破壞->
info.file ->
|1|mukul|15|male|india
|2|linus|31|male|finland
|3|rob|27|male|usa|
bill|29|male|usa
上例中當php寫入rob的資訊到檔案的時候,bill正好也開始寫入,這時候正好需要寫入rob紀錄的'n',引起檔案破壞。
我們當然不希望發生這樣的情況, 所以讓我們看看檔案鎖定:
複製內容到剪貼簿
php **:<?php
$file_name
= "data.dat";
$file_pointer
= fopen
( $file_name
, "r");
$lock
= flock
( $file_pointer
, lock_sh
);
// 我使用4.0.2,所以用lock_sh,你可能需要直接寫成 1.
if (
$lock
)fclose
( $file_pointer
);
"檔案內容為 $file_read";
?>
上例中,如果兩個檔案read.php和read2.php都要訪問該檔案,那麼它們都可以讀取,但是當乙個程式需要寫入的時候,它必須等待,直到讀操作完成,檔案所釋放。
<?php
$file_name
= "data.dat";
$file_pointer
= fopen
( $file_name
, "w");
$lock
= flock
( $file_pointer
, lock_ex
);
// 如果版本低於php4.0.2, 用 2 代替 lock_ex
if (
$lock
)fclose
( $file_pointer
);
"資料成功寫入檔案";
?>
雖然"w"模式用來覆蓋檔案, 單我覺得不適用。
<?php
$file_name
= "data.dat";
$file_pointer
= fopen
( $file_name
, "a");
$lock
= flock
( $file_pointer
, lock_ex
);
// 如果版本低於php4.0.2, 用 2 代替 lock_ex
if (
$lock
)fclose
( $file_pointer
);
"資料成功寫入檔案";
?>
hmmm..., 對於追加資料與其他操作有點不同,就是fseek! 確認檔案指標在檔案尾部總是乙個好習慣。
如果是在windows系統下, 上面的檔案中檔名前面需要加上''.
PHP中檔案讀寫操作
以下為檔案讀寫操作的 基本php函式及模式 看不明白就記住他 關於模式 r 唯讀方式開啟,檔案指標置於檔案頭 r 讀寫方式開啟,檔案指標置於檔案頭 w 只寫開啟,檔案指標置於檔案頭,檔案被剪下為0位元組,如果檔案不存在,嘗試建立檔案 w 讀寫開啟,檔案指標置於檔案頭,檔案大小被剪下為0位元組,如果檔...
PHP 檔案讀寫操作
php 中,資料通常都是儲存在mysql資料庫當中的。但是有些時候,我們還是需要使用php讀寫一些本地檔案。比如生成靜態頁面或者資料的本地快取。php5 提供了一種方法file put contents file,data,mode,context 它將乙個字串寫入檔案,返回寫入到檔案內資料的位元組...
QT中檔案讀寫操作
void widget on pushbutton clicked ui text r settext qstring t file.close void widget on pushbutton 2 clicked qstring qbytearray qstring.toutf8 qbytear...