在對一個文件進行訪問之前,一般我們都需要判斷文件是否存在,以免調用了不存在的文件導致錯誤。
php判斷文件是否存在函數:file_exists(),結構形式如下:
file_exist($string);
參數$string為一個指向文件或目錄的字符型變量,如果文件或目錄存在,則返回true,否則返回false。
實例:
代碼如下 復制代碼<?php
/* 判斷post.php是否存在 */
$file="post.php";
if(file_exists($file)){
echo "文件存在<br>";
}
else{
echo "文件不存在<br>";
}
/* 判斷images目錄是否存在 */
$category="images";
if(file_exists($category)){
echo "目錄存在";
}
else{
echo "目錄不存在";
}
?>
php提供了一些訪問文件屬性的函數,可以獲取文件的大小、類型、修改時間等
獲取文件屬性函數
實例:
代碼如下 復制代碼<?php
$filename="php.txt";
echo filesize($filename). "<br>";
echo filetype($filename). "<br>";
echo date("Y年 m月 d日",filemtime($filename)). "<br>";
echo date("Y年 m月 d日",fileatime($filename)). "<br>";
echo fileperms($filename). "<br>";
?>
在讀取文件之前,必須先打開一個文件,php提供fopen()函數可以打開本地文件,也可以打開遠程文件。其基本結構形式如下:
resource fopen (string $filename, string $mode)
參數filename是要打開的文件名。參數mode是要打開文件的方式,如下表所示:
實例:
代碼如下 復制代碼
<?php
fopen("php.txt","a"); /* 寫入方式打開本地文件 */
fopen("http://www.111cn.net/robots.txt","r"); /* 只讀方式打開遠程服務器文件 */
?>
首先建立一個”php.txt”的文件,內容如下:
hello
php
1、fgetc()函數讀取文件中的某個字符,其結構形式如下:
string fgetc(resource $handle)
參數$handle是已經被打開的文件指針,函數返回當前文件指針所指向的字符。如果文件指針指向文件末尾,則返回false。
實例:
代碼如下 復制代碼<?php
$filename=fopen('php.txt','r');
$string=fgetc($filename); /* 讀取文件開頭第一個字符 */
echo $string;
?>
文件被打開後文件指針通常位於文件的開始位置。但是當對文件執行了一定操作後就很難判斷此時php指針的位置了。
php文件指針位置查找函數ftell(),其結構形式如下:
int ftell(resource $handle)
參數$handle是要查找指針的文件,通過該函數能夠判斷文件指針的位置,函數返回整數值。
實例:
代碼如下 復制代碼<?php
$f=fopen("php.txt","r");
fgets($f,2);
echo ftell($f);
?>
php寫文件函數fwrite()可以將所需的內容寫入到目標文件中,結構形式如下:
int fwrite(resource $handle,string $string [,int $length])
參數$handle是要被寫入的文件,采納數$string是要寫入的內容,參數$length可選,是要寫入的長度。fwrite()函數返回寫入的字符數,出現錯誤時返回false。
實例:
代碼如下 復制代碼<?php
$filename="php.txt";
$str1="第一次寫入<br>";
$str2="第二次寫入";
if(is_writable($filename)){ /* is_writable()函數判斷文件是否可寫 */
$file=fopen($filename,"w"); /* 以寫入方式打開文件 */
$w1=fwrite($file,$str1); /* 將內容寫入文件 */
$w2=fwrite($file,$str2);
$file=fopen($filename,"r");
if($w1) echo fgets($file); /* 讀取文件內容 */
else echo "寫入不成功";
}
else echo "文件不可寫";
?>
php指針函數rewind()可以將文件位置指針設到文件的開頭,其結構形式如下:
bool rewind (resource $handle );
函數返回一個布爾值,如果成功則返回true,失敗則返回false。
實例:
代碼如下 復制代碼<?php
$f=fopen("php.txt","r");
echo fgets($f)."<br>"; /*輸出第一行*/
echo fgets($f)."<br>"; /*輸出第二行*/
rewind($f); /*指針返回文件頭*/
echo fgets($f); /*輸出第一行*/
?>