1.打開文件
定義和用法
fopen() 函數打開文件或者 URL。
如果打開失敗,本函數返回 FALSE。
語法
fopen(filename,mode,include_path,context)
參數 描述
filename 必需。規定要打開的文件或 URL。
mode 必需。規定要求到該文件/流的訪問類型。可能的值見下表。
include_path 可選。如果也需要在 include_path 中檢索文件的話,可以将該參數設為 1 或 TRUE。
context 可選。規定文件句柄的環境。Context 是可以修改流的行為的一套選項。
mode 參數的可能的值
mode 說明
"r" 隻讀方式打開,将文件指針指向文件頭。
"r " 讀寫方式打開,将文件指針指向文件頭。
"w" 寫入方式打開,将文件指針指向文件頭并将文件大小截為零。如果文件不存在則嘗試創建之。
"w " 讀寫方式打開,将文件指針指向文件頭并将文件大小截為零。如果文件不存在則嘗試創建之。
2.訪問文件
1)fread()
定義和用法
fread() 函數讀取文件(可安全用于二進制文件)。
語法
fread(file,length)
參數 描述
file 必需。規定要讀取打開文件。
length 必需。規定要讀取的最大字節數。
說明
fread() 從文件指針 file 讀取最多 length 個字節。該函數在讀取完最多 length 個字節數,或到達 EOF 的時候,或(對于網絡流)當一個包可用時,或(在打開用戶空間流之後)已讀取了 8192 個字節時就會停止讀取文件,視乎先碰到哪種情況。
返回所讀取的字符串,如果出錯返回 false。
例:fread.php
<?php
$filename = "file.txt"; //文件名稱
$handle = fopen($filename, "r");//隻讀打開文件句柄指針
$str1 = fread($handle,filesize($filename));//讀取文件,按照文件自身大小讀取
echo '$str1 = '.$str1.'<br><br>';//讀取文件内容
fclose($handle);//關閉隻讀
$handle = fopen($filename, "r");//再次打開隻讀文件
$str2 = fread($handle,7);//讀取文件,按照7個字節讀取 換行占兩個字節
echo '$str2 = '.$str2;//讀取文件内容
fclose($handle);//關閉隻讀
?>
結果:
注:讀取文件3個步驟
調用fopen函數打開文件句柄
調用fread等文件讀取函數
調用fclose函數關閉文件句柄
2)fgets()
定義和用法
fgets() 函數從文件指針中讀取一行。
語法
fgets(file,length)
參數 描述
file 必需。規定要讀取的文件。
length 可選。規定要讀取的字節數。默認是 1024 字節。
說明
從 file 指向的文件中讀取一行并返回長度最多為 length - 1 字節的字符串。碰到換行符(包括在返回值中)、EOF 或者已經讀取了 length - 1 字節後停止(要看先碰到那一種情況)。如果沒有指定 length,則默認為 1K,或者說 1024 字節。
若失敗,則返回 false。
例:fgets.php
<?php
$handle = @fopen("file.txt", "r");//打開隻讀句柄
$i = 0;//定義變量存儲行數
while (!feof($handle)) { //函數檢測是否已到達文件末尾 (eof) 是或者錯誤返回true
$buffer = fgets($handle, 4096); //句柄處讀取行内容 字節大小為4096-1的内容
$i = $i 1;//計數
echo "第 $i 行".$buffer.'<br>';//打印讀取幾行内容
}
fclose($handle);//關閉句柄
?>
結果:
注:
定義和用法
feof() 函數檢測是否已到達文件末尾 (eof)。
如果文件指針到了 EOF 或者出錯時則返回 TRUE,否則返回一個錯誤(包括 socket 超時),其它情況則返回 FALSE。
語法
feof(file)
參數 描述
file 必需。規定要檢查的打開文件。
說明
file 參數是一個文件指針。這個文件指針必須有效,并且必須指向一個由 fopen() 或 fsockopen() 成功打開(但還沒有被 fclose() 關閉)的文件。
3)fgetc()
定義和用法
fgetc() 函數從文件指針中讀取一個字符。
語法
fgetc(file)
參數 描述
file 必需。規定要檢查的文件。
說明
返回一個包含有一個字符的字符串,該字符從 file 指向的文件中得到。碰到 EOF 則返回 false。
文件指針必須有效,并且必須指向一個由 fopen() 或 fsockopen() 成功打開(但還沒有被 fclose() 關閉)的文件。
例:fgetc.php
<?php
$fp = @fopen('file.txt', 'r');//打開隻讀句柄
$i = 0;//定義變量存儲字符次數
while (false !== ($char = fgetc($fp))) { //讀取句柄中每一個字符直到EOF 返回false
$i = $i 1;//計數
echo "第 $i 字符:$char<br>";//打印讀取第幾個字符
}
?>
結果:
4)file()
定義和用法
file() 函數把整個文件讀入一個數組中。
與 file_get_contents() 類似,不同的是 file() 将文件作為一個數組返回。數組中的每個單元都是文件中相應的一行,包括換行符在内。
如果失敗,則返回 false。
語法
file(path,include_path,context)
參數 描述
path 必需。規定要讀取的文件。
include_path 可選。如果也想在 include_path 中搜尋文件的話,可以将該參數設為 "1"。
context
可選。規定文件句柄的環境。
context 是一套可以修改流的行為的選項。若使用 null,則忽略。
說明
對 context 的支持是 PHP 5.0.0 添加的。
返回的數組中每一行都包括了行結束符,因此如果不需要行結束符時還需要使用 rtrim() 函數。
例:file.php
<?php
$lines = file('file.txt');// 把文件内容存儲到$lines 數組裡,數組中每個單元都是文件中的一行,包括換行符在内
foreach ($lines as $num => $line) { //foreach方式遍曆打印數組内容
echo "第{$num}行: ".$line."<br>";
}
?>
結果:
5)fgetss()
定義和用法
fgetss() 函數從打開的文件中讀取一行并過濾掉 HTML 和 PHP 标記。
與 fgets() 相同,不同的是 fgetss 嘗試從讀取的文本中去掉任何 HTML 和 PHP 标記。
語法
fgetss(file,length,tags)
參數 描述
file 必需。規定要讀取的文件。
length 可選。規定要讀取的字節數。默認是 1024 字節。該參數在 PHP 5 之前是必需的。
tags 可選。規定不會被删除的标簽。
說明
可以用可選的第三個參數 tags 指定哪些标記不被去掉。
若失敗,則返回 false。
例:fgetss.php
<?php
$handle = @fopen("file.html", "r");//打開隻讀句柄
$i = 0;//定義變量存儲行數
while (!feof($handle)) {//函數檢測是否已到達文件末尾 (eof) 是或者錯誤返回true
$lines = fgetss($handle);//從打開的文件中讀取一行并過濾掉 HTML 和 PHP 标記。
$i = $i 1;//計數
echo "第{$i}行: ".$lines."<br>";//打印讀取幾行内容
}
?>
file.html
<html>
<head>title
</head>
<body>
<pre>This is a file.
<table>
<tr>
<td>abcd</td>
<td>xyz</td>
</tr>
</table>
</body>
</html>
結果:
3.寫入文件
1)fwrite
定義和用法
fwrite() 函數寫入文件(可安全用于二進制文件)。
語法
fwrite(file,string,length)
參數 描述
file 必需。規定要寫入的打開文件。
string 必需。規定要寫入文件的字符串。
length 可選。規定要寫入的最大字節數。
說明
fwrite() 把 string 的内容寫入文件指針 file 處。 如果指定了 length,當寫入了 length 個字節或者寫完了 string 以後,寫入就會停止,視乎先碰到哪種情況。
fwrite() 返回寫入的字符數,出現錯誤時則返回 false。
例:fwrite.php
<?php
$filename = 'file.txt'; //文件名稱
$content = "abcd\nxyz";//文件内容
$handle = fopen($filename,'a ');//讀寫方式打開,将文件指針指向文件末尾。如果文件不存在則嘗試創建之。
if(fwrite($handle,$content) === false) //返回寫入的字符數,出現錯誤時則返回 false。
{
echo "寫入{$filename}文件失敗";//寫入{$filename}文件失敗
exit;
}
echo "寫入{$filename}文件成功";//寫入{$filename}文件成功
fclose($handle);//關閉句柄
?>
結果:
2)file_put_contents
定義和用法
file_put_contents() 函數把一個字符串寫入文件中。
與依次調用 fopen(),fwrite() 以及 fclose() 功能一樣。
語法
file_put_contents(file,data,mode,context)
參數 描述
file 必需。規定要寫入數據的文件。如果文件不存在,則創建一個新文件。
data 可選。規定要寫入文件的數據。可以是字符串、數組或數據流。
mode
可選。規定如何打開/寫入文件。可能的值:
FILE_USE_INCLUDE_PATH
FILE_APPEND
LOCK_EX
context
可選。規定文件句柄的環境。
context 是一套可以修改流的行為的選項。若使用 null,則忽略。
說明
參數 data 可以是數組(但不能是多維數組)。
自 PHP 5.1.0 起,data 參數也可以被指定為 stream 資源,stream 中所保存的緩存數據将被寫入到指定文件中,這種用法就相似于使用 stream_copy_to_stream() 函數。
對 context 參數的支持是 PHP 5.0.0 添加的。
返回值
該函數将返回寫入到文件内數據的字節數。
提示和注釋
提示:使用 FILE_APPEND 可避免删除文件中已有的内容。
例:file_put_contents.php
<?php
$content = 'file_put_contents';//寫入内容
$file = 'file.txt';//寫入文件
if(file_put_contents($file ,$content) === false)//返回寫入的字符數,出現錯誤時則返回 false。
{
echo "寫入{$file}文件失敗";//寫入{$file}文件失敗
exit;
}
echo "寫入{$file}文件成功";//寫入{$file}文件成功
?>
結果:
4.複制文件
定義和用法
copy() 函數拷貝文件。
語法
copy(source,destination)
參數 描述
source 必需。規定要複制的文件。
destination 必需。規定複制文件的目的地。
說明
将文件從 source 拷貝到 destination。如果成功則返回 TRUE,否則返回 FALSE。
提示和注釋
提示:如果要移動文件的話,請使用 rename() 函數。
例:copy.php
<?php
$file = 'filebak.txt'; //被複制原文件
$newfile = 'file.txt';//複制後文件
if (!copy($file, $newfile)) {//如果成功則返回 TRUE,否則返回 FALSE。
echo "文件複制失敗:{$file} copy to {$newfile}";
}
else {
echo "文件複制成功:{$file} copy to {$newfile}";
}
?>
結果:
原文件不存在報錯
5.删除文件
定義和用法
unlink() 函數删除文件。
若成功,則返回 true,失敗則返回 false。
語法
unlink(filename,context)
參數 描述
filename 必需。規定要删除的文件。
context 可選。規定文件句柄的環境。Context 是可修改流的行為的一套選項。
例:unlink.php
<?php
$filename = 'file.txt'; //要被删除文件
fopen($filename,'a ');//讀寫方式打開,将文件指針指向文件末尾。如果文件不存在則嘗試創建之。
if(!unlink($filename))//若成功,則返回 true,失敗則返回 false。
{
echo "文件{$filename}删除失敗";
}
else
{
echo "文件{$filename}删除成功";
}
?>
結果:
6.重命名文件
定義和用法
rename() 函數重命名文件或目錄。
若成功,則該函數返回 true。若失敗,則返回 false。
語法
rename(oldname,newname,context)
參數 描述
oldname 必需。規定要重命名的文件或目錄。
newname 必需。規定文件或目錄的新名稱。
context 可選。規定文件句柄的環境。context 是可修改流的行為的一套選項。
例:rename.php
<?php
$filename = 'file.txt';//被重命名原文件
$newname = 'newfile.txt';//重命名文件
fun_rename($filename,$newname);//調用fun_rename函數
function fun_rename($filename,$newname)//創建函數 形參$filename和$newname
{
if(!rename($filename,$newname))//若成功,則該函數返回 true。若失敗,則返回 false。
{
echo "文件{$filename}重命名為{$newname}失敗<br>";
}
else
{
echo "文件{$filename}重命名為{$newname}成功<br>";
}
}
?>
結果:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!