PHP檔案操作函數有哪些?php熱門檔案操作函數的總結(附代碼)

來源:互聯網
上載者:User
php檔案操作函數有很多種,今天在這裡我將給大家分享一下PHP常用的檔案操作函數,話不多說,讓我們來看一看PHP檔案操作究竟有哪些函數吧。

1 php獲得檔案名稱:
basename — 返迴路徑中的檔案名稱部分

給出一個包含有指向一個檔案的全路徑的字串,本函數返回基本的檔案名稱。如果檔案名稱是以 suffix 結束的,那這一部分也會被去掉。

string basename ( string $path [, string $suffix ] )

$path = "/home/cate/index/index2.php";$file = basename($path);echo $file.'<br>'; //index2.php
$file2 = basename($path,'.php');echo $file2;    //index2
$file3 = basename($path,'2.php');echo $file2;    //index

2 php獲得目錄名

dirname — 返迴路徑中的目錄部分

string dirname ( string $path )

給出一個包含有指向一個檔案的全路徑的字串,本函數返回去掉檔案名稱後的目錄名。

echo dirname(__FILE__);

__FILE__指向當前檔案所在的路徑 等同於 getcwd();

3 php得到路徑關聯陣列

pathinfo — 返迴文件路徑的資訊

pathinfo() 返回一個關聯陣列包含有 path 的資訊。包括以下的數組單元:dirnamebasenameextension

可以通過參數 options 指定要返回哪些單元。它們包括:PATHINFO_DIRNAMEPATHINFO_BASENAMEPATHINFO_EXTENSION。預設是返回全部的單元。如果不是要求取得所有單元,則本函數返回字串。

<?php$path_parts = pathinfo("/home/cate/index.action.html");// /home/cate   檔案目錄echo $path_parts["dirname"] . "<br/>";          //  index.action.html  檔案名稱echo $path_parts["basename"] . "<br/>";         //  html        副檔名echo $path_parts["extension"] . "<br/>";//直接擷取副檔名       echo pathinfo("/home/cate/index.action.html", PATHINFO_EXTENSION);

4 fopen函數— 開啟檔案或者 URL

resource fopen ( string $filename , string $mode [, bool $use_include_path [, resource $zcontext ]] )

'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 以及以後的版本所支援,僅能用於本地檔案。

<?php    $handle = fopen("doc.txt", "r");    var_dump($handle);

D:\wamp\www\test\jsontest.php:3:resource(3, stream)

<?php    $file = fopen('newtxt.txt','w')or die('無法開啟檔案');//不存在則自動建立    $data = 'you are a coder!';    fwrite($file,$data);    $data = 'you are a MAN!';    fwrite($file,$data);    fclose($file);

5 fstat函數— 通過已開啟的檔案指標取得檔案資訊

array fstat ( resource $handle )

擷取由檔案指標 handle 所開啟檔案的統計資訊。本函數和 stat() 函數相似,除了它是作用於已開啟的檔案指標而不是檔案名稱。

返回一個數組具有該檔案的統計資訊,該數組的格式詳細說明於手冊中 stat() 頁面裡。

<?php// 開啟檔案$fp = fopen("doc.txt", "r");// 取得統計資訊$fstat = fstat($fp);// 關閉檔案fclose($fp);// 只顯示關聯陣列部分//print_r(array_slice($fstat, 13)); print_r($fstat);//擷取一個檔案資訊數組包括索引和關聯陣列

array_slice — 從數組中取出一段 返回數組

array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )

array_slice() 返回根據 offset 和 length 參數所指定的 array 數組中的一段序列。

如果 offset 非負,則序列將從 array 中的此位移量開始。如果 offset 為負,則序列將從 array 中距離末端這麼遠的地方開始。

如果給出了 length 並且為正,則序列中將具有這麼多的單元。如果給出了 length 並且為負,則序列將終止在距離數組末端這麼遠的地方。如果省略,則序列將從 offset 開始一直到 array 的末端。

<?php$input = array("a", "b", "c", "d", "e");$output = array_slice($input, 2);      // returns "c", "d", and "e"$output = array_slice($input, -2, 1);  // returns "d"$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"// note the differences in the array keysprint_r(array_slice($input, 2, -1));print_r(array_slice($input, 2, -1, true));

Array

(

[0] => c

[1] => d

)

Array

(

[2] => c

[3] => d

)

6 filesize函數— 取得檔案大小

int filesize ( string $filename )

返迴文件大小的位元組數,如果出錯返回 FALSE 並產生一條 E_WARNING 級的錯誤。

<?php$filename = 'doc.txt';echo $filename.':'.filesize($filename).'bytes';

doc.txt:46bytes

7.disk_free_space函數— 返回目錄中的可用空間

float disk_free_space ( string $directory )

給出一個包含有一個目錄的字串,本函數將根據相應的檔案系統或磁碟分割返回可用的位元組數。

<?phpecho disk_free_space("C:").'<br/>';echo disk_free_space("D:").'<br/>';echo disk_free_space("/");

71001600000
186459181056

disk_total_space — 返回一個目錄的磁碟總大小

8 fileatime函數— 取得檔案的上次訪問時間

filectime — 取得檔案的 inode 修改時間

filemtime — 取得檔案修改時間

9 file函數— 把整個檔案讀入一個數組中

<?php$myfile = 'doc.txt';$lines = file($myfile);for($i=0,$len = count($lines);$i<$len;$i++){    echo mb_convert_encoding($lines[$i], "UTF-8", "GBK").'<br/>';}

我是一個新手程式員,需要慢慢努力才能有所收穫1!
我是一個新手程式員,需要慢慢努力才能有所收穫2!
我是一個新手程式員,需要慢慢努力才能有所收穫3!
我是一個新手程式員,需要慢慢努力才能有所收穫4!
我是一個新手程式員,需要慢慢努力才能有所收穫5!
我是一個新手程式員,需要慢慢努力才能有所收穫6!

mb_convert_encoding($lines[$i], "UTF-8", "GBK")

將每一行原來的WINDOWS下GBK格式的資料$lines[$i]轉換為UTF-8格式

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

<?php$myfile = 'doc.txt';$encoding = mb_detect_encoding($myfile, array('GBK','UTF-16','UCS-2','UTF-8','BIG5','ASCII'));echo $encoding;

CP936 即GBK

mb_detect_encoding — 偵測字元集 第一個為檔案或者路徑 第二個為可能的字元集

10 fgets函數— 從檔案指標中讀取一行

string fgets ( int $handle [, int $length ] )

從 handle 指向的檔案中讀取一行並返回長度最多為 length - 1 位元組的字串。碰到分行符號(包括在傳回值中)、EOF 或者已經讀取了 length - 1 位元組後停止(看先碰到那一種情況)。如果沒有指定 length,則預設為 1K,或者說 1024 位元組。

出錯時返回 FALSE

<?php$handle = fopen('doc.txt','r');if ($handle){    while (!feof($handle)){        $data[] = fgets($handle,1024);    }    print_r($data);    fclose($handle);}
Array(    [0] => 我是一個新手程式員,需要慢慢努力才能有所收穫1!    [1] => 我是一個新手程式員,需要慢慢努力才能有所收穫2!    [2] => 我是一個新手程式員,需要慢慢努力才能有所收穫3!    [3] => 我是一個新手程式員,需要慢慢努力才能有所收穫4!    [4] => 我是一個新手程式員,需要慢慢努力才能有所收穫5!    [5] => 我是一個新手程式員,需要慢慢努力才能有所收穫6!)

feof — 測試檔案指標是否到了檔案結束的位置

如果伺服器沒有關閉由 fsockopen() 所開啟的串連,feof() 會一直等待直到逾時而返回 TRUE。預設的逾時限制是 60 秒,可以使用 stream_set_timeout() 來改變這個值。

fclose — 關閉一個已開啟的檔案指標

11 fgetss函數—— 從檔案指標中讀取一行並過濾掉 HTML 標籤
和 fgets() 相同,只除了 fgetss 嘗試從讀取的文本中去掉任何 HTML 和 PHP 標記。

可以用可選的第三個參數指定哪些標記不被去掉

file_exists — 檢查檔案或目錄是否存在

bool file_exists ( string $filename )

如果由 filename 指定的檔案或目錄存在則返回 TRUE,否則返回 FALSE

12 file_put_contents函數— 將一個字串寫入檔案

int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )

和依次調用 fopen(),fwrite() 以及 fclose() 功能一樣。

filename 要寫入資料的檔案名稱
data 要寫入的資料。類型可以是 string,array(但不能為多維陣列),或者是 stream 資源
flags 可選,規定如何開啟/寫入檔案。可能的值:
FILE_USE_INCLUDE_PATH:檢查 filename 副本的內建路徑
FILE_APPEND:在檔案末尾以追加的方式寫入資料
LOCK_EX:對檔案上鎖
context 可選,Context是一組選項,可以通過它修改文字屬性

  • fopen() - 開啟檔案或者 URL

  • fwrite() - 寫入檔案(可安全用於二進位檔案)

  • file_get_contents() - 將整個檔案讀入一個字串

<?phpecho file_put_contents('doc.txt','你是一個程式員7',FILE_APPEND);

返回位元組數22

如果檔案不存在,則建立檔案,相當於fopen()函數行為。

如果檔案存在,預設將清空檔案內的內容,可設定 flags 參數值為 FILE_APPEND 以避免。

file_put_contents 函數可安全用於二進位對象。

如果對於確定已經存在的檔案,最好進行一個判斷

if (file_exists('test.txt')) {    file_put_contents('test.txt','contents' );}

相關推薦:

php檔案操作的方法及執行個體詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.