PHP中檔案讀寫操作

2021-05-22 02:08:37 字數 4220 閱讀 6154

以下為檔案讀寫操作的 基本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

);

// 關閉檔案

print

"讀取到的檔案內容是: $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

);

// 結束

print

"資料成功寫入檔案";

?>

追加到檔案後面:

<?php

$file_name

= "data.dat";

// 絕對路徑: homedata.dat

$file_pointer

= fopen

( $file_name

, "a");

// "w"模式

fwrite

( $file_pointer,)

;

// 不把檔案剪下成0位元組, 把資料追加到檔案最後

fclose

( $file_pointer

);

// 結束

print

"資料成功追加到檔案";

?>

以上只是簡單介紹,下面我們要討論一些更深層的。

有時候會發生多人寫入的情況(最常見是在流量較大的**),會產生無用的資料寫入檔案, 例如:

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

);

print

"檔案內容為 $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

);

print

"資料成功寫入檔案";

?>

雖然"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

);

print

"資料成功寫入檔案";

?>

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...