IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置:首頁網(wǎng)絡(luò)編程PHP編程 → PHP編程中八種常見的文件操作方式

PHP編程中八種常見的文件操作方式

時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)

文件和目錄的操作

php處理本地服務(wù)器上的文件和目錄是非常方便的,但有時候會出現(xiàn)權(quán)限和路徑相關(guān)的問題

1.打開文件

resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )

$handle = fopen(filename,mode)//打開文件,返回代表此文件的資源的句柄

文件名稱可以使用相對路徑或者絕對路徑也可以使用網(wǎng)絡(luò)協(xié)議模式,打開模式具有r\r+\w\w+\a\a+\x\x+\b 在操作二進制文件時如果沒有指定 'b' 標記,可能會碰到一些奇怪的問題,包括壞掉的圖片文件以及關(guān)于 \r\n 字符的奇怪問題。

為移植性考慮,強烈建議在用 fopen() 打開文件時總是使用 'b' 標記。

以下是幾種打開文件的方式

$fp = @fopen('log.txt',"rb");

$fp = @fopen('../log.txt',"rb");

$fp = @fopen("https://www.runer.com.cn/default.htm","rb");//還可以使用ftp和ghoper等協(xié)議,必須啟用php.ini文件中的allow_url_fopen選項

////////////////////////////代碼部分////////////////////////////////////////

$filename1 = "userinfo.txt";//目錄下或include_path中存在這個文件

$filename2 = "test.txt";//目錄下或include_path并不存在這個文件

$resource1 = fopen($filename1,"rb");

@$resource2 = fopen($filename2,"rb");//因為目錄中不存在這個文件,并且并未使用或include_path尋找包含文件所在路徑則此操作會報錯,使用錯誤抑制符@可以迫使瀏覽器不輸出錯誤信息

if($resource1)

echo "打開文件{$filename1}成功";

if(!@fopen($filename2,"r"))

echo "打開文件{$filename2}不成功";

//////////////////////////////////////////////////////////////////////////

---------------------輸出結(jié)果----------------------------------------

打開文件userinfo.txt成功

---------------------------------------------------------------------

2.使用完畢文件后,要顯式的告訴PHP已經(jīng)使用完文件,讓操作系統(tǒng)確保將文件的所有內(nèi)容正確地從緩沖區(qū)刷新到硬盤

使用fclose()關(guān)閉文件,

bool fclose ( resource handle )//關(guān)閉一個已打開的文件指針

3.讀取文件,fopen函數(shù)的mode參數(shù)允許讀取,PHP提供了幾個函數(shù)從文件讀取數(shù)據(jù)

string fgets ( int handle [, int length] )從文件指針中讀取一行,在二進制文件上嘗試fgets會產(chǎn)生不可預(yù)測的結(jié)果

如果不指定長度,默認讀取1K數(shù)據(jù),碰到換行符(包括在返回值中)、EOF 或者已經(jīng)讀取了 length - 1 字節(jié)后停止

string fgetss ( resource handle [, int length [, string allowable_tags]] )從文件指針中讀取一行并過濾掉 HTML 標記

fgetc()讀取單個字符

fread()讀取任意二進制數(shù)據(jù)

////////////////////////////代碼部分////////////////////////////////////////

$handle = fopen ("test.jpg", "rb");

$c;

while (!feof($handle)) {

$contents .= @fread($handle, 8192);//循環(huán)讀取并將其合并為一個大塊文件

}

fclose($handle);

//////////////////////////////////////////////////////////////////////////

---------------------輸出結(jié)果----------------------------------------

---------------------------------------------------------------------

4.判斷文件讀取的狀態(tài)

每個文件句柄都有一個文件指針,或者一個指出下一個操作將在文件中哪里發(fā)生的游標,根據(jù)fopen函數(shù)的mode參數(shù)

文件指針最初位于文件的開頭(0),或者文件的末尾

feof()可以判斷文件是否已經(jīng)到末尾(到末尾后函數(shù)返回TRUE)

filesize()函數(shù)返回文件的大小 5.寫入文件

fwrite()函數(shù)執(zhí)行文件寫入

////////////////////////////代碼部分////////////////////////////////////////

$filename = 'test.txt';

$somec;

// 首先我們要確定文件存在并且可寫。

if (is_writable($filename)) {

// 在這個例子里,我們將使用添加模式打開$filename,

// 因此,文件指針將會在文件的開頭,

// 那就是當我們使用fwrite()的時候,$somecontent將要寫入的地方。

if (!$handle = fopen($filename, 'a')) {

echo "不能打開文件 $filename";

exit;

}

// 將$somecontent寫入到我們打開的文件中。

if (fwrite($handle, $somecontent) === FALSE) {

echo "不能寫入到文件 $filename";

exit;

}

echo "成功地將 $somecontent 寫入到文件$filename";

fclose($handle);

} else {

}

echo "文件 $filename 不可寫";

//////////////////////////////////////////////////////////////////////////

---------------------輸出結(jié)果----------------------------------------

成功地將 添加這些文字到文件 寫入到文件test.txt

---------------------------------------------------------------------

對于二進制數(shù)據(jù),必須指定第三個參數(shù),它包含寫入到磁盤的數(shù)據(jù)字節(jié)數(shù)

$result = @fwrite($fp,$binary_data,mb_strlen($binary_data,'8bit'));

6.文件權(quán)限和其他信息

is_readable()//判斷文件是否可讀

is_writeable()//判斷文件是否可寫

is_writable()//判斷文件是否可寫

fileperms()//判斷文件的權(quán)限(UNIX風格的文件權(quán)限測試函數(shù))

file_exists()//是否存在這個文件

fileowner()//判斷文件所屬用戶

filegroup()//判斷文件所屬組

7.刪除和重命名文件

unlink()//刪除文件

rename()//重命名文件

8.訪問目錄

目錄訪問建議使用前向斜線"/",兼容windows和unix系統(tǒng)

basename()//返回不包括路徑信息的文件名

dirname()//返回文件名的目錄部分

realpath()//接受相對路徑,返回文件的絕對路徑

pathinfo()//提取給定路徑的目錄名,基本文件名和擴展名

opendir()//打開目錄,返回資源句柄

readdir()//讀取目錄項

rewinddir()//將讀取指針返回開頭

closedir()//關(guān)閉讀取句柄

chdir()//改變當前腳本執(zhí)行期間的當前工作目錄

mkdir()//創(chuàng)建目錄

rmdir()刪除目錄

////////////////////////////代碼部分////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////

---------------------輸出結(jié)果----------------------------------------

filename: web : filetype: dir

filename: study : filetype: di

關(guān)鍵詞標簽:PHP編程,常見,文件操作

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 plsql developer怎么連接數(shù)據(jù)庫-plsql deveplsql developer怎么連接數(shù)據(jù)庫-plsql deve2021年最好用的10款php開發(fā)工具推薦2021年最好用的10款php開發(fā)工具推薦在 PHP 中使用命令行工具在 PHP 中使用命令行工具php應(yīng)用程序安全防范技術(shù)研究php應(yīng)用程序安全防范技術(shù)研究

相關(guān)下載

人氣排行 詳解ucenter原理及第三方應(yīng)用程序整合思路、方法PHP中防止SQL注入攻擊PHP會話Session的具體使用方法解析PHP運行出現(xiàn)Notice : Use of undefined constant 的解決辦法CakePHP程序員必須知道的21條技巧PHP如何清空mySQL數(shù)據(jù)庫PHP采集圖片實例(PHP采集)plsql developer怎么連接數(shù)據(jù)庫-plsql developer連接數(shù)據(jù)庫方法