一.目錄操作
basename -- 返迴路徑中的檔案名稱部分
dirname -- 返迴路徑中的目錄部分
pathinfo -- 返迴文件路徑的資訊
realpath -- 返回正常化的絕對路徑名
複製代碼 代碼如下:
$path = 'demo1.php';
$path = realpath($path);
echo basename($path);
echo '
';
echo dirname($path);
echo '
';
$array_path = pathinfo($path);
echo 'basename : '.$array_path['basename'].'
';
echo 'dirname : '.$array_path['dirname'].'
';
echo 'extension : '.$array_path['extension'].'
';
echo 'filename : '.$array_path['filename'].'
';
?>
Output:
demo1.php
D:\AppServ\www\Basic6
basename : demo1.php
dirname : D:\AppServ\www\Basic6
extension : php
filename : demo1
二.磁碟、目錄和檔案計數
1.查看檔案大小和磁碟空間
filesize -- 取得檔案大小
disk_free_space -- 返回目錄中的可用空間
disk_total_space -- 返回一個目錄的磁碟總大小
複製代碼 代碼如下:
$path ='demo2.php';
$path = realpath($path);
$drive = 'c:';
echo round(filesize($path)/1024,2).'kb'.'
';
echo round(disk_free_space($drive)/1024/1024/1024,2).'GB'.'
';
echo round(disk_total_space($drive)/1024/1024/1024,2).'GB'.'
';
?>
output
0.26kb
10.61GB
30.01GB
2.獲得檔案的各種時間
fileatime -- 取得檔案的上次訪問時間
filectime -- 取得檔案的 inode 修改時間
filemtime -- 取得檔案修改時間
複製代碼 代碼如下:
$file = realpath ( '../Basic5/demo3.php' );
$date_format = 'Y-m-d h:i:s';
echo 'lastest accessing time : '.date ( $date_format, fileatime ( $file ) ) . '
';
echo 'lastest change time : '.date ( $date_format, filectime ( $file ) ) . '
';
echo 'lastest modify time : '.date ( $date_format, filemtime ( $file ) ) . '
';
?>
output
lastest accessing time : 2011-12-18 04:26:49
lastest change time : 2011-12-18 04:26:49
lastest modify time : 2011-12-18 04:29:15
三.檔案處理
檔案讀寫的兩種方式:
1.php所有版本都支援的方法:
fopen -- 開啟檔案或者 URL
fclose -- 關閉一個已開啟的檔案指標
fwrite -- 寫入檔案(可安全用於二進位檔案)
表 1. fopen() 中 mode 的可能值列表
mode |
說明 |
'r' |
唯讀方式開啟,將檔案指標指向檔案頭。 |
'r+' |
讀寫方式開啟,將檔案指標指向檔案頭。 |
'w' |
寫入方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。 |
'w+' |
讀寫方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。 |
'a' |
寫入方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。 |
'a+' |
讀寫方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。 |
'x' |
建立並以寫入方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 調用失敗並返回 FALSE,並產生一條 E_WARNING 層級的錯誤資訊。如果檔案不存在則嘗試建立之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支援,僅能用於本地檔案。 |
'x+' |
建立並以讀寫方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 調用失敗並返回 FALSE,並產生一條 E_WARNING 層級的錯誤資訊。如果檔案不存在則嘗試建立之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支援,僅能用於本地檔案。 |
複製代碼 代碼如下:
$fp = fopen('file1.txt','w');
$outStr = "my name is anllin,\r\nmy age is 29.";
fwrite($fp,$outStr,strlen($outStr));
fclose($fp);
?>
output
my name is anllin,
my age is 29.
2.php5新加入的方法
file_put_contents -- 將一個字串寫入檔案
複製代碼 代碼如下:
file_put_contents('file2.txt',"my name is anllin,\r\nmy age is 29.");
?>
output
my name is anllin,
my age is 29.
讀出檔案內容的方法:
函數 |
功能 |
Fgetc() |
讀出一個字元,並將指標移到下一個字元 |
Fgets() |
讀出一行字元,可以指定一行顯示的長度。 |
Fgetss() |
從檔案指標中讀取一行並過濾掉HTML標記 |
Fread() |
讀取定量的字元 |
Fpassthru() |
輸出檔案到指定處的所有剩餘資料 |
File() |
將整個檔案讀入數組中,以行分組 |
Readfile() |
讀入一個檔案並寫入到輸出緩衝 |
File_get_contents() |
將整個檔案讀入一個字串 |
Feof() |
判斷讀完檔案函數 |
File_exists() |
查看檔案是否存在 |
樣本檔案file1.txt的內容如下:
my name is anllin,
my age is 29.
fgetc -- 從檔案指標中讀取字元
Demo.php
複製代碼 代碼如下:
$fp = fopen('file1.txt','r');
echo fgetc($fp);
echo fgetc($fp);
fclose($fp);
?>
Output:
my
fgets -- 從檔案指標中讀取一行
複製代碼 代碼如下:
$fp = fopen('file1.txt','r');
echo fgets($fp);
echo fgets($fp);
fclose($fp);
?>
output
my name is anllin, my age is 29.
fgetss -- 從檔案指標中讀取一行並過濾掉 HTML 標籤
複製代碼 代碼如下:
$fp = fopen('file3.txt','w');
$outStr = "my name is
anllin";
fwrite($fp,$outStr,strlen($outStr));
fclose($fp);
$ftp = fopen('file3.txt','r');
echo fgetss($ftp);
fclose($ftp);
?>
Output
my name is anllin
fread -- 讀取檔案(可安全用於二進位檔案)
複製代碼 代碼如下:
$filename = 'file1.txt';
$fp = fopen($filename,'r');
$contents = fread($fp,filesize($filename));
echo $contents;
fclose($fp);
?>
Output
my name is anllin, my age is 29.
fpassthru -- 輸出檔案指標處的所有剩餘資料
複製代碼 代碼如下:
$filename = 'file1.txt';
$fp = fopen($filename,'rb');
$leftSize = fpassthru($fp);
echo $leftSize;
fclose($fp);
?>
output
my name is anllin, my age is 29. 33
file -- 把整個檔案讀入一個數組中
複製代碼 代碼如下:
$lines = file('file1.txt');
foreach ($lines as $line_num => $line)
{
echo $line_num.' : '.$line.'
';
}
?>
output
0 : my name is anllin,
1 : my age is 29.
readfile -- 輸出一個檔案
複製代碼 代碼如下:
$size = readfile('file1.txt');
echo $size;
?>
output
my name is anllin, my age is 29.33
file_get_contents -- 將整個檔案讀入一個字串(php5.0新增)
複製代碼 代碼如下:
$contents = file_get_contents('file1.txt');
echo $contents;
?>
output
my name is anllin, my age is 29.
feof -- 測試檔案指標是否到了檔案結束的位置
複製代碼 代碼如下:
$fp = fopen('file1.txt','r');
while(!feof($fp))
{
echo fgetc($fp);
}
fclose($fp);
?>
output
my name is anllin, my age is 29.
file_exists -- 檢查檔案或目錄是否存在
複製代碼 代碼如下:
$filename = 'file1.txt';
if(file_exists($filename))
{
echo '執行檔案讀寫操作';
}
else
{
echo '你要找的檔案不存在';
}
?>
output
執行檔案讀寫操作
filesize -- 取得檔案大小
複製代碼 代碼如下:
$file_size = filesize('file1.txt');
echo $file_size;
?>
output
33
unlink -- 刪除檔案
複製代碼 代碼如下:
$isDeleted = unlink('file3.txt');
echo $isDeleted;
?>
output
1
rewind -- 倒迴文件指標的位置
ftell -- 返迴文件指標讀/寫的位置
fseek -- 在檔案指標中定位
複製代碼 代碼如下:
$fp = fopen ( 'file1.txt', 'r' );
fgetc ( $fp );
fgetc ( $fp );
echo ftell ( $fp ) . '
';
rewind ( $fp );
echo ftell ( $fp ) . '
';
fgetc ( $fp );
fgetc ( $fp );
echo ftell ( $fp ) . '
';
fseek($fp,0);//same as rewind ($fp)
echo ftell ( $fp ) . '
';
?>
output
2
0
2
0
Flock的操作值
操作值 |
意義 |
LOCK_SH(以前為1) |
讀寫鎖定。這意味著檔案可以共用,其他人可以讀該檔案 |
LOCK_EX(以前為2) |
寫伺服器用戶端檔案鎖。這是互斥的,該檔案不能被共用 |
LOCK_UN(以前為3) |
釋放已有的鎖定 |
LOCK_NB(以前為4) |
防止在請求加鎖時發生阻塞 |
flock -- 輕便的諮詢檔案鎖定
複製代碼 代碼如下:
$filename = 'file1.txt';
$fp = fopen($filename,'rb');
flock($fp,LOCK_EX);//locked
$contents = fread($fp,filesize($filename));
flock($fp,LOCK_UN);//unlocked
echo $contents;
fclose($fp);
?>
output
my name is anllin, my age is 29.
目錄控制代碼操作
opendir -- 開啟目錄控制代碼
readdir -- 從目錄控制代碼中讀取條目
closedir -- 關閉目錄控制代碼
複製代碼 代碼如下:
$dir= opendir('../Basic6');
while(!!$file = readdir($dir))
{
echo $file.'
';
}
closedir($dir);
?>
output
.
..
.buildpath
.project
.settings
demo1.php
demo10.php
demo11.php
demo12.php
demo13.php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo19.php
demo2.php
demo20.php
demo3.php
demo4.php
demo5.php
demo6.php
demo7.php
demo8.php
demo9.php
file1.txt
file2.txt
scandir -- 列出指定路徑中的檔案和目錄
複製代碼 代碼如下:
$files = scandir('../Basic6');
foreach($files as $file)
{
echo $file.'
';
}
?>
output
.
..
.buildpath
.project
.settings
demo1.php
demo10.php
demo11.php
demo12.php
demo13.php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo19.php
demo2.php
demo20.php
demo21.php
demo3.php
demo4.php
demo5.php
demo6.php
demo7.php
demo8.php
demo9.php
file1.txt
file2.txt
rename -- 重新命名一個檔案或目錄
複製代碼 代碼如下:
rename('demo1.php','demo01.php');
if(file_exists('demo01.php'))
{
echo 'file rename success';
}
else
{
echo 'file rename fail';
}
?>
output
file rename success
rmdir -- 刪除目錄
複製代碼 代碼如下:
rmdir('123');
if(file_exists('123'))
{
echo 'delete file fail';
}
{
echo 'delete file success';
}
?>
output
delete file success
http://www.bkjia.com/PHPjc/324803.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/324803.htmlTechArticle一.目錄操作 basename -- 返迴路徑中的檔案名稱部分 dirname -- 返迴路徑中的目錄部分 pathinfo -- 返迴文件路徑的資訊 realpath -- 返回正常化的絕對...