欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP文件打開關(guān)閉及讀寫操作示例解析

 更新時間:2020年08月06日 14:44:58   作者:IT界的吉祥物  
這篇文章主要介紹了PHP文件打開關(guān)閉及讀寫操作示例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

PHP支持文件上傳功能,因此學(xué)習(xí)PHP文件的相關(guān)操作是必須的,這篇筆記會去記錄PHP文件系統(tǒng)的相關(guān)知識。

文件打開與關(guān)閉

文件處理包括讀取、關(guān)閉、重寫等,例如,訪問一個文件需要3步:打開文件、讀寫文件和關(guān)閉文件。其他的操作要么是包含在讀寫文件中(如顯示內(nèi)容、寫入內(nèi)容等),要么與文件自身的屬性有關(guān)系(如文件遍歷、文件改名等)。

1、打開文件

在PHP中使用fopen()函數(shù)打開文件,fopen()函數(shù)的語法如下:

resource fopen ( string filename, string mode [, bool use_include_path]);
  • filename是要打開的包含路徑的文件名,可以是相對路徑,也可以是絕對路徑。如果沒有任何前綴則表示打開的是本地文件。
  • mode是打開文件的方式,可取的值如下表所示。
  • use_include_path是可選的,該參數(shù)在配置文件php.ini中指定一個路徑,如F:\AppServ\ www\mess.php,如果希望服務(wù)器在這個路徑下打開所指定的文件,可以設(shè)置為1或 true。

mode 模式名稱 說明
r 只讀 讀模式—進行讀取,文件指針位于文件的開頭
r+ 讀寫 讀寫模式—進行讀寫,文件指針位于文件的開頭。在現(xiàn)有文件內(nèi)容的末尾之前進行寫入就會覆蓋原有的內(nèi)容
w 只寫 寫模式—進行寫入文件,文件指針指向頭文件。如果該文件存在,則所有文件內(nèi)容被刪除,否則函數(shù)將創(chuàng)建這個文件
w+ 讀寫 讀寫模式—進行讀寫,文件指針指向頭文件。如果該文件存在,則所有文件的內(nèi)容被刪除;否則函數(shù)將創(chuàng)建這個文件
x 謹慎寫 寫模式打開文件,從文件頭開始寫。如果文件已經(jīng)存在,則該文件將不會被打開,函數(shù)返回false,PHP將產(chǎn)生一個警告
x+ 謹慎寫 讀/寫模式打開文件,從文件頭開始寫。如果該文件存在,則該文件將不會被打開,函數(shù)返回false,PHP將產(chǎn)生一個警告
a 追加 追加模式打開文件,文件指針指向尾文件。如果該文件已有內(nèi)容,則將從內(nèi)容末尾開始追加;如果文件不存在,則函數(shù)創(chuàng)建這個文件
a+ 追加 追加模式打開文件,文件指針指向頭文件。如果該文件已有內(nèi)容,則從文件末尾開始追加或者讀?。蝗绻募淮嬖?,則函數(shù)將創(chuàng)建這個文件
b 二進制 二進制模式—用于與其他模式進行連接。如果文件系統(tǒng)能夠區(qū)分二進制文件和文本文件,可能會使用它。Windows可以區(qū)分;UNIX則不區(qū)分。推薦使用這個選項,便于獲得最大程度的可移植性。它是默認模式
t 文本 用于其他模式的結(jié)合。這個模式只是Windows下的一個選擇

2、關(guān)閉文件

對文件的操作結(jié)束后應(yīng)該關(guān)閉這個文件,否則可能引起錯誤。在PHP中使用fclose()函數(shù)關(guān)閉文件,該函數(shù)的語法如下:

bool fclose ( resource handle ) ;

該函數(shù)將參數(shù)handle指向的文件關(guān)閉,如果成功,返回true,否則返回false。其中的文件指針必須是有效的,并且是通過fopen()函數(shù)成功打開的文件。例如:

<?php
  $f_open =fopen("../file.txt.","rb");   //打開文件
  …  //對文件進行操作
  fclose($f_open)   //操作完成后關(guān)閉文件        
?>

讀寫文件

1.從文件中讀取數(shù)據(jù)

從文件中讀取數(shù)據(jù),可以讀取一個字符、一行字串或整個文件,還可以讀取任意長度的字串。

讀取整個文件:readfile()、file()和file_get_contents()。

(1)readfile()函數(shù)

readfile()函數(shù)用于讀入一個文件并將其寫入到輸出緩沖,如果出現(xiàn)錯誤則返回false。函數(shù)語法 如下:

int readfile(string filename)

使用readfile()函數(shù),不需要打開/關(guān)閉文件,不需要echo/print等輸出語句,直接寫出文件路徑即可。

(2)file()函數(shù)

file()函數(shù)也可以讀取整個文件的內(nèi)容,只是file()函數(shù)將文件內(nèi)容按行存放到數(shù)組中,包括換行符在內(nèi)。如果失敗則返回false。函數(shù)語法如下:

array file(string filename)

(3)file_get_contents()函數(shù)

該函數(shù)將文件內(nèi)容(filename)讀入一個字符串。如果有offset和maxlen參數(shù),將在參數(shù)offset所指定的位置開始讀取長度為maxlen的內(nèi)容。如果失敗,返回false。函數(shù)語法如下:

string file_get_contents(string filename[,int offset[,int maxlen]])

該函數(shù)適用于二進制對象,是將整個文件的內(nèi)容讀入到一個字符串中的首選方式。

示例:
使用readfile()函數(shù)、file()函數(shù)和file_get_contents()函數(shù)分別讀取tm.txt的內(nèi)容。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>讀取整個文件</title>
<style type="text/css">
<!--
body,td,th {
  font-size: 12px;
}
body {
  margin-left: 10px;
  margin-top: 10px;
  margin-right: 10px;
  margin-bottom: 10px;
}
-->
</style></head>
<body>
<table border="1" cellspacing="0" cellpadding="0">
 <tr>
  <td width="280" height="25" align="right" valign="middle" scope="col">使用readfile()函數(shù)讀取文件內(nèi)容:</td>
  <td height="25" align="center" valign="middle" scope="col">
  <?php readfile('tm.txt'); ?>  </td>
 </tr>
 <tr>
  <td height="25" align="right" valign="middle">使用file()函數(shù)讀取文件內(nèi)容:</td>
  <td height="25" align="center" valign="middle">
  <?php
    $f_arr = file('tm.txt');
    foreach($f_arr as $cont){
      echo $cont."<br>";
    }
  ?></td>
 </tr>
 <tr>
  <td width="280" height="25" align="right" valign="middle" scope="col">使用file_get_contents()函數(shù)讀取文件內(nèi)容:</td>
  <td height="25" align="center" valign="middle" scope="col">
  <?php

    $f_chr = file_get_contents('tm.txt');
    echo $f_chr;

  ?></td>
 </tr>
</table>
</body>
</html>

效果:

讀取一行數(shù)據(jù):fgets()和fgetss()

(1)fgets()函數(shù)

fgets()函數(shù)用于一次讀取一行數(shù)據(jù)。函數(shù)語法如下:

string fgets( int handle [, int length] )
  • handle是被打開的文件
  • length是要讀取的數(shù)據(jù)長度。

函數(shù)能夠?qū)崿F(xiàn)從handle指定文件中讀取一行并返回長度最大值為
length-1個字節(jié)的字符串。在遇到換行符、EOF或者讀取了length-1個字節(jié)后停止。如果忽略length參數(shù),那么讀取數(shù)據(jù)直到行結(jié)束。

(2)fgetss()函數(shù)

fgetss()函數(shù)是fgets()函數(shù)的變體,用于讀取一行數(shù)據(jù),同時,
fgetss()函數(shù)會過濾掉被讀取內(nèi)容中的html和php標(biāo)記。函數(shù)語法如下:

string fgetss ( resource handle [, int length [, string 
allowable_tags]] )

該函數(shù)能夠從讀取的文件中過濾掉任何html和php標(biāo)記??梢允褂?
allowable_tags參數(shù)來控制哪些標(biāo)記不被過濾掉。

示例:使用fgets()函數(shù)與fgetss()函數(shù)分別讀取fun.php文件并顯示出來。

fun.php:

<table width="200" border="0" cellspacing="0" cellpadding="0">
 <tr>
  <td height="20" align="center" valign="middle" scope="col"><font color='red'>I am red.</font></td>
  <td height="20" align="center" valign="middle" scope="col"><font color='green'>I am green.</font></td>
 </tr>
 <tr>
  <td height="20" align="center" valign="middle"><font color='black'>I am black.</font></td>
  <td height="20" align="center" valign="middle"><font color='pink'>I am pink. </font></td>
 </tr>
</table>

index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>fgets和fgetss的區(qū)別</title>
<style type="text/css">
<!--
body,td,th {
  font-size: 12px;
}
body {
  margin-left: 10px;
  margin-top: 10px;
  margin-right: 10px;
  margin-bottom: 10px;
}
-->
</style></head>
<body>
<div align="left"></div>
<table border="1" cellspacing="0" cellpadding="0">
 <tr>
  <td height="30" align="right" valign="middle" scope="col">使用fgets函數(shù):</td>
  <td height="30" align="center" valign="middle" scope="col">
<?php
  header("Content-Type:text/html;charset=utf-8");
  $fopen = fopen('fun.php','rb');
  while(!feof($fopen)){
    echo fgets($fopen);
  }
  fclose($fopen);
?> </td>
 </tr>
 <tr>
  <td height="30" align="right" valign="middle">使用fgetss函數(shù):</td>
  <td height="30" align="center" valign="middle">
  <?php
  $fopen = fopen('fun.php','rb');
  while(!feof($fopen)){
    echo fgetss($fopen);
  }
  fclose($fopen);
?> </td>
 </tr>
</table>
</body>
</html>

效果:

讀取一個字符:fgetc()

在對某一個字符進行查找、替換時,需要有針對性地對某個字符進行讀取,在PHP中可以使用fgetc()函數(shù)實現(xiàn)此功能。函數(shù)語法如下:

string fgetc ( resource handle )

該函數(shù)返回一個字符,該字符從handle指向的文件中得到。遇到EOF則返回false。

讀取任意長度的字串:fread()

fread()可以從文件中讀取指定長度的數(shù)據(jù),函數(shù)語法如下:

string fread ( int handle, int length )

參數(shù)handle為指向的文件資源,length是要讀取的字節(jié)數(shù)。當(dāng) 函數(shù)讀取length個字節(jié)或到達EOF時停止執(zhí)行。

2.將數(shù)據(jù)寫入文件

寫入數(shù)據(jù)也是PHP中常用的文件操作,在PHP中使用fwrite()和file_put_contents()函數(shù)向文件中寫入數(shù)據(jù)。

fwrite()函數(shù)也稱為fputs(),它們的用法相同。fwrite()函數(shù)的語法如下:

int fwrite ( resource handle, string string [, int length] )

該函數(shù)把內(nèi)容string寫入文件指針handle處。如果指定了長度length,則寫入length個字節(jié)后停止。如果文件內(nèi)容長度小于length,則會輸出全部文件內(nèi)容。

file_put_contents()函數(shù)是PHP 5新增的函數(shù),其語法為:

int file_put_contents ( string filename, string data [, int 
flags])

filename為寫入數(shù)據(jù)的文件。data為要寫入的數(shù)據(jù)。flags可以是FILE_USE_INCLUDE_PATH、FILE_APPEND或LOCK_EX,LOCK_EX為獨占鎖定。

使用file_put_contents()函數(shù)和依次調(diào)用fopen()、fwrite()、 fclose()函數(shù)的功能一樣。

示例:使用fwrite函數(shù)向文件中寫入數(shù)據(jù),再使用 file_put_contents()函數(shù)寫入數(shù)據(jù)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>使用fwrite和file_put_contents函數(shù)寫入數(shù)據(jù)</title>
<style type="text/css">
<!--
body,td,th {
  font-size: 12px;
}
body {
  margin-left: 10px;
  margin-top: 10px;
  margin-right: 10px;
  margin-bottom: 10px;
}
-->
</style></head>
<body>
<?php
header("Content-Type:text/html;charset=utf-8");
  $filepath = "05.txt";
  $str = "此情可待成追憶  只是當(dāng)時已惘然<br>";
  echo "用fwrite函數(shù)寫入文件:";
  $fopen = fopen($filepath,'wb') or die('文件不存在');
  fwrite($fopen,$str);
  fclose($fopen);
  readfile($filepath);
  echo "<p>用file_put_contents函數(shù)寫入文件:";
  file_put_contents($filepath,$str);
  readfile($filepath);
?>
</body>
</html>

效果:

除了可以對文件內(nèi)容進行讀寫,對文件本身同樣也可以進行操作,如復(fù)制、重命名、查看修改日期等。PHP內(nèi)置了大量的文件操作函數(shù)。

 - bool copy( string path1, string path2):將文件從path1復(fù)制到path2。如果成功,返回true,失敗則返回false。例如:copy('tm.txt','../tm.txt')


 - bool unlink( string filename )刪除文件,成功返回true,失敗則返回False。例如:unlink(‘./tm.txt')


 - int fileatime( string filename )返回文件最后一次被訪問的時間,時間以UNIX時間戳的方式返回。例如:fileatime('1.txt')


 - int filemtime( string filename )返回文件最后一次被修改的時間,時間以UNIX時間戳的方式返回。例如:date('Y-m-dH:i:s',filemtime('1.txt'))


 - int filesize( string filename )取得文件filename的大(bytes)。例如:filesize('1.txt')


 - array pathinfo(string name [, int options])返回一個數(shù)組,包含文件name的路徑信息。有dirname、basename和extension??梢酝ㄟ^option設(shè)置要返回的信息,有PATHINFO_DIRNAME、PATHINFO_BASENAME和PATHINFO_EXTENSION。
默認為返回全部。例如:
$arr =pathinfo('/tm/sl/12/5/1.txt');
foreach($arras$method=>$value{
  echo$method.“:”.$value.“<br>”;
}



 - string realpath ( string filename )返回文件filename的絕對路徑。如c:\tmp\…\1.txtrealpath('1.txt')


 - array stat ( string filename )返回一個數(shù)組,包括文件的相關(guān)信息,如上面提到的文件大小、最后修改時間等
 $arr = stat('1.txt');
 foreach($arr as $method => $value){
   echo $method.": ".$value."<br>";
 }

到此這篇關(guān)于PHP文件打開關(guān)閉及讀寫操作示例解析的文章就介紹到這了,更多相關(guān)PHP文件打開關(guān)閉及讀寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux平臺編譯安裝PHP7并安裝Redis擴展與Swoole擴展實例教程

    linux平臺編譯安裝PHP7并安裝Redis擴展與Swoole擴展實例教程

    這篇文章主要介紹了linux平臺編譯安裝PHP7并安裝Redis擴展與Swoole擴展的方法,結(jié)合實例形式詳細分析了Linux平臺上安裝php7并安裝Redis擴展與Swoole擴展的具體步驟與操作技巧,需要的朋友可以參考下
    2016-09-09
  • 一文徹底搞懂php的后期靜態(tài)綁定舉例講解

    一文徹底搞懂php的后期靜態(tài)綁定舉例講解

    這篇文章主要來帶大家徹底搞懂php的后期靜態(tài)綁定的舉例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 如何使用“PHP” 彩蛋進行敏感信息獲取

    如何使用“PHP” 彩蛋進行敏感信息獲取

    關(guān)于PHP彩蛋這個玩法已經(jīng)被國外的某些Web漏洞掃描器(例如:HP WebInspect)所使用了,用其來探測被掃描的網(wǎng)站使用的是何種Web開發(fā)語言
    2013-08-08
  • PHP非對稱與對稱雙向加密解密的方式

    PHP非對稱與對稱雙向加密解密的方式

    RSA非對稱加密解密算法是一種廣泛應(yīng)用于信息安全領(lǐng)域的加密算法,AES、DES、3DES都是對稱加密算法,也就是說加密和解密使用的是同一個密鑰,本文給大家介紹了PHP非對稱與對稱雙向加密解密的方式,需要的朋友可以參考下
    2023-10-10
  • 深入PHP許愿墻模塊功能分析

    深入PHP許愿墻模塊功能分析

    本篇文章是對PHP實現(xiàn)許愿墻的模塊功能進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Thinkphp框架安裝composer擴展包流程梳理

    Thinkphp框架安裝composer擴展包流程梳理

    這篇文章主要介紹了Thinkphp使用composer安裝擴展包教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • php下pdo的mysql事務(wù)處理用法實例

    php下pdo的mysql事務(wù)處理用法實例

    這篇文章主要介紹了php下pdo的mysql事務(wù)處理用法,以實例形式分析了基于pdo的事物提交與回滾操作的用法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • Windows下XDebug 手工配置與使用說明

    Windows下XDebug 手工配置與使用說明

    XDebug 是一個 php 代碼的調(diào)試工具, 對程序員調(diào)試程序有很大的幫助, 下面簡單說下 XDebug 在 Windows 下的配置.
    2010-07-07
  • golang與php實現(xiàn)計算兩個經(jīng)緯度之間距離的方法

    golang與php實現(xiàn)計算兩個經(jīng)緯度之間距離的方法

    這篇文章主要介紹了golang與php實現(xiàn)計算兩個經(jīng)緯度之間距離的方法,結(jié)合實例形式對比分析了Go語言與php進行經(jīng)緯度計算的相關(guān)數(shù)學(xué)運算技巧,需要的朋友可以參考下
    2016-07-07
  • php PDO實現(xiàn)的事務(wù)回滾示例

    php PDO實現(xiàn)的事務(wù)回滾示例

    這篇文章主要介紹了php PDO實現(xiàn)的事務(wù)回滾功能,結(jié)合具體實例形式分析了php基于PDO操作實現(xiàn)事務(wù)回滾功能的相關(guān)SQL語句與操作技巧,需要的朋友可以參考下
    2017-03-03

最新評論