PHP的目錄操作和檔案操作

2021-06-16 08:36:21 字數 3908 閱讀 1968

一、引論

在任何計算機裝置中,檔案是都是必須的物件,而在web程式設計中,檔案的操作一直是web程式設計師的頭疼的地方,而,檔案的操作在cms系統中這是必須的,非常有用的,我們經常遇到生成檔案目錄,檔案(夾)編輯等操作,現在我把php中的這些函式做一詳細總結並例項示範如何使用.,關於對應的函式詳細介紹,請查閱php手冊.此處只總結重點.和需要注意的地方.(這在php手冊是沒有的.)

二、目錄操作

首先介紹的是乙個從目錄讀取的函式,opendir(),readdir(),closedir(),使用的時候是先開啟檔案控制代碼,而後迭代列出:

$base_dir = "filelist/"; 

$fso = opendir($base_dir); 

echo $base_dir."

" ; 

while($flist=readdir($fso)) 

closedir($fso) 

?>

這是講返回檔案目錄下面的檔案已經目錄的程式(0檔案將返回false).

有時候需要知道目錄的資訊,可以使用dirname($path)和basename($path),分別返回路徑的目錄部分和檔名名稱部分,可用disk_free_space($path)返回看空間空餘空間.

建立命令:

mkdir($path,0777)

,0777是許可權碼,在非window下可用umask()函式設定

rmdir($path)

將刪除路徑在$path的檔案.

dir -- directory 類也是操作檔案目錄的重要類,有3個方法,read,rewind,close,這是乙個仿物件導向的類,它先使用的是開啟檔案控制代碼,然後用指標的方式讀取的.,這裡看php手冊:

$d = dir("/etc/php5");

echo "handle: " . $d->handle . "n";

echo "path: " . $d->path . "n";

while (false !== ($entry = $d->read()))

$d->close();

?>

輸出:handle: resource id #2

path: /etc/php5...

apache

cgicli

檔案的屬性也非常重要,檔案屬性包括建立時間,最後修改時間,所有者,檔案組,型別,大小等.

下面我們重點談檔案操作.

三、檔案操作

a、讀檔案

首先是乙個檔案看能不能讀取(許可權問題),或者存在不,我們可以用is_readable函式獲取資訊。

$file = 'dirlist.php';

if (is_readable($file) == false) else

?>

判斷檔案存在的函式還有file_exists(下面演示),但是這個顯然無is_readable全面.,當乙個檔案存在的話可以用

$file = "filelist.php";

if (file_exists($file) == false)

$data = file_get_contents($file);

echo htmlentities($data);

?>

但是file_get_contents函式在較低版本上不支援,可以先建立檔案的乙個控制代碼,然後用指標讀取全部:

$fso = fopen($cachefile, 'r');

$data = fread($fso, filesize($cachefile));

fclose($fso);

還有一種方式,可以讀取二進位制的檔案:

$data = implode('', file($file));

b、寫檔案

和讀取檔案的方式一樣,先看看是不是能寫:

$file = 'dirlist.php';

if (is_writable($file) == false)

?>

能寫了的話可以使用file_put_contents函式寫入:

$file = 'dirlist.php'; 

if (is_writable($file) == false)  

$data = '我是可鄙,我想要'; 

file_put_contents ($file, $data); 

?>

file_put_contents函式在php5中新引進的函式(不知道存在的話用function_exists函式先判斷一下)低版本的php無法使用,可以使用如下方式:

$f = fopen($file, 'w'); 

fwrite($f, $data); 

fclose($f);

替換之.

寫檔案的時候有時候需要鎖定,然後寫:

function cache_page($pageurl,$pagedata) 

if(!flock($fso,lock_ex)) 

if(!fwrite($fso,$pagedata)) 

flock($fso,lock_un);//釋放鎖定 

fclose($fso); 

return true; }

c、複製,刪除檔案

php刪除檔案非常easy,用unlink函式簡單操作:

$file = 'dirlist.php'; 

$result = @unlink ($file); 

if ($result == false) else  

?>

即可.複製檔案也很容易:

$file = 'yang.txt'; 

$newfile = 'ji.txt'; # 這個檔案父資料夾必須能寫 

if (file_exists($file) == false)  

$result = copy($file, $newfile); 

if ($result == false)  

?>

可以使用rename()函式重新命名乙個資料夾.其他操作都是這幾個函式組合一下就能實現的.

d、獲取檔案屬性

我說幾個常見的函式:

$file = 'test.txt'; 

echo date('r', filemtime($file)); 

?>

返回的說unix的時間戳,這在快取技術常用.

相關的還有獲取上次被訪問的時間fileatime(),filectime()當檔案的許可權,所有者,所有組或其它 inode 中的元資料被更新時間,fileowner()函式返回檔案所有者

$owner = posix_getpwuid(fileowner($file));

(非window系統),ileperms()獲取檔案的許可權,

$file = 'dirlist.php';

$perms = substr(sprintf('%o', fileperms($file)), -4);

echo $perms;

?>

filesize()返回檔案大小的位元組數:

// 輸出類似:somefile.txt: 1024 bytes

$filename = 'somefile.txt'; 

echo $filename . ': ' . filesize($filename) . ' bytes';

?>

獲取檔案的全部資訊有個返回陣列的函式stat()函式:

$file = 'dirlist.php'; 

$perms = stat($file); 

var_dump($perms); 

?>

那個鍵對應什麼可以查閱詳細資料,此處不再展開.

四、結束語

上面我簡要的總結了一下幾個檔案操作,如果您熟練掌握以上列出的函式,已經在操作的時候沒什麼大的問題,php檔案操作的函式變化比較快,現在已經非常強大了,檔案這部分也是學習php非常重要的一部分,希望不要忽略.

PHP目錄操作和檔案操作

php 操作目錄 1,目錄操作概述 2,建立新目錄 mkdir 新建乙個由pathname指定的目錄,建立成功方式ture,否則為false bool mkdir string pathname,int mode 0777,bool recursive false pathname 指定目錄的路徑 ...

php 目錄 路徑和檔案 操作

目錄操作 解析路徑 basename 返回路徑的檔名部分 獲取目錄部分 dirname 返回路徑的目錄部分 路徑資訊 pathinfo 返回陣列 目錄名,基本名,副檔名 獲取絕對路徑 realpath 返回絕對路徑或 硬鏈結 絕對路徑 很重要 文字開啟 資料庫連線 磁碟 目錄 檔案大小 檔案大小 f...

Python 檔案操作 和 目錄操作

我們知道,檔名 目錄名和鏈結名都是用乙個字串作為其識別符號的,但是給我們乙個識別符號,我們該如何確定它所指的到底是常規檔案檔名 目錄名還是鏈結名呢?這時,我們可以使用os.path模組提供的isfile函式 isdir函式和islink函式來達成我們的目標,如下所示 print myfile,是乙個...