一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - php 目錄與文件處理-鄭阿奇(續(xù))

php 目錄與文件處理-鄭阿奇(續(xù))

2019-12-04 11:07鄭阿奇 PHP教程

php 目錄與文件處理-鄭阿奇(續(xù)) ,需要的朋友可以參考下。

1.文件目錄操作 
最頂層止錄是磁盤根目錄,用'/'或'//' 
當(dāng)前目錄 ./ 
../表示apache的目錄即htdocs目錄 
1.創(chuàng)建與刪除目錄 mkdir 

復(fù)制代碼代碼如下:


<?php 
if(mkdir("./path",0700)) //在當(dāng)前目錄中創(chuàng)建path目錄 
echo "創(chuàng)建成功"; 
?> 


2.獲取和更改當(dāng)前目錄 
使用getcwd()函數(shù)可以取得當(dāng)前的工作目錄,該函數(shù)沒有參數(shù)。成功則返回當(dāng)前的工作目錄,失敗則返回FALSE 
3.打開和關(guān)閉目錄句柄 
opendir($dir) 
closed($dir_handle) 
4.讀取目錄內(nèi)容 
readdir(),該參數(shù)是一個已經(jīng)打開的目錄句柄,與while循環(huán)可以實現(xiàn)對目錄的遍歷 
5.獲取指定路徑中的目錄與文件 。 
array scandir(string $directory [, int $sorting_order [, resource $context ]]) 
說明:$directory為指定路徑。參數(shù)$sorting_order默認(rèn)是按字母升序排列,如果設(shè)為1表示按字母的降序排列。 
$context是可選參數(shù),是一個資源變量,可以用stream_context_create()函數(shù)生成,這個變量保存著與具體的操作對象有關(guān)的一些數(shù)據(jù)。 
函數(shù)運行成功則返回一個包含指定路徑下的所有目錄和文件名的數(shù)組,失敗則返回FALSE 
2.操作文件的一般方法 
3.文件的打開與關(guān)閉 
1.打開文件 
resource fopen(string $filename , string $mode [, bool $use_include_path [, resource $context ]]) 
●$filename參數(shù)。fopen()函數(shù)將$filename參數(shù)指定的名字資源綁定到一個流上 
●$mode參數(shù)。$mode參數(shù)指定了fopen()函數(shù)訪問文件的模式,取值見表4.5。 
$mode 
說 明 
'r' 
只讀方式打開文件,從文件頭開始讀 
'r+' 
讀寫方式打開文件,從文件頭開始讀寫 
'w' 
寫入方式打開文件,將文件指針指向文件頭。如果文件已經(jīng)存在則刪除已有內(nèi)容,如果文件不存在則嘗試創(chuàng)建它 
'w+' 
讀寫方式打開文件,將文件指針指向文件頭。如果文件已經(jīng)存在則刪除已有內(nèi)容,如果文件不存在則嘗試創(chuàng)建它 
'a' 
寫入方式打開文件,將文件指針指向文件末尾,如果文件已有內(nèi)容將從文件末尾開始寫。如果文件不存在則嘗試創(chuàng)建它 
'a+' 
讀寫方式打開文件,將文件指針指向文件末尾。如果文件已有內(nèi)容將從文件末尾開始讀寫。如果文件不存在則嘗試創(chuàng)建它 
'x' 
創(chuàng)建并以寫入方式打開文件,將文件指針指向文件頭。如果文件已存在,則fopen()調(diào)用失敗并返回FALSE,并生成一條E_WARNING級別的錯誤信息。如果文件不存在則嘗試創(chuàng)建它。此選項被PH及以后的版本所支持,僅能用于本地文件 
'x+' 
創(chuàng)建并以讀寫方式打開文件,將文件指針指向文件頭。如果文件已存在,則fopen()調(diào)用失敗并返回FALSE,并生成一條E_WARNING級別的錯誤信息。如果文件不存在則嘗試創(chuàng)建它。此選項被PH及以后的版本所支持,僅能用于本地文件 
'b' 
二進(jìn)制模式,用于連接在其他模式后面。如果文件系統(tǒng)能夠區(qū)分二進(jìn)制文件和文本文件(Windows區(qū)分,而UNIX不區(qū)分),則需要使用到這個選項,推薦一直使用這個選項以便獲得最大程度的可移植性 

●$use_include_path參數(shù)。如果需要在include_path(PHP的include路徑,在PHP的配置文件設(shè)置)中搜尋文件, 
可以將可選參數(shù) $use_include_path的值設(shè)為1或TRUE,默認(rèn)為FALSE。 
●$context參數(shù)。可選的$context參數(shù)只有文件被遠(yuǎn)程打開時(如通過HTTP打開)才使用,它是一個資源變量, 
其中保存著與fopen()函數(shù)具體的操作對象有關(guān)的一些數(shù)據(jù)。如果fopen()打開的是一個HTTP地址, 
那么這個變量記錄著HTTP請求的請求類型、HTTP版本及其他頭信息;如果打開的是FTP地址, 
記錄的可能是FTP的被動/主動模式 
2.關(guān)閉文件 
bool fclose(resource $handle) 
4.文件的寫入 
文件寫入前需打開文件,不存在先創(chuàng)建它,一般用fopen()函數(shù)創(chuàng)建 
●fwrite().文件打開后,向文件寫入內(nèi)容 
int fwrite(resource $handle , string $string [, int $length ]) 
說明:參數(shù)$handle是寫入的文件句柄, 
$string是將要寫入文件中的字符串?dāng)?shù)據(jù), 
$length是可選參數(shù),如果指定了$length,則當(dāng)寫入了$string中的前$length個字節(jié)的數(shù)據(jù)后停止寫入。 
●file_put_contents()函數(shù)。PHP 5還引入了file_put_contents()函數(shù)。這個函數(shù)的功能與依次調(diào)用fopen()、fwrite()及fclose()函數(shù)的功能一樣。語法格式如下: 
int file_put_contents(string $filename , string $data [, int $flags [, resource $context ]]) 
說明:$filename是要寫入數(shù)據(jù)的文件名。 
$data是要寫入的字符串,$data也可以是數(shù)組,但不能為多維數(shù)組。 
在使用FTP或HTTP向遠(yuǎn)程文件寫入數(shù)據(jù)時,可以使用可選參數(shù)$flags和$context,這里不具體介紹。 
寫入成功后函數(shù)返回寫入的字節(jié)數(shù),否則返回FALSE。 
●fputcsv()函數(shù)。CSV是一種比較常用的文件格式,一般以.csv作為擴(kuò)展名。CSV格式把文件的一行看做是一條記錄,記錄里的字段使用逗號分隔。 
在PHP中使用 fputcsv()函數(shù)可以把指定的數(shù)組格式化為符合CSV文件格式的內(nèi)容,并寫入文件指針指向的當(dāng)前行。語法格式如下: 
int fputcsv(resource $handle [, array $fields [, string $delimiter [, string $enclosure ]]]) 
說明:參數(shù)$handle是要寫入的文件句柄。 
參數(shù)$fields是要格式化的數(shù)組。 
可選的$delimiter參數(shù)用于設(shè)定字段分界符(只允許一個字符),默認(rèn)為逗號。 
可選的$enclosure參數(shù)設(shè)定字段環(huán)繞符(只允許一個字符),默認(rèn)為雙引號 
5 文件的讀取 
1.讀取任意長度 
fread()函數(shù)可以用于讀取文件的內(nèi)容,語法格式如下: 
string fread(int $handle, int $length) 
說明:參數(shù)$handle是已經(jīng)打開的文件指針, 
$length是指定讀取的最大字節(jié)數(shù),$length的最大取值為8192。 
如果讀完$length個字節(jié)數(shù)之前遇到文件結(jié)尾標(biāo)志(EOF),則返回所讀取的字符,并停止讀取操作。 
如果讀取成功則返回所讀取的字符串,如果出錯返回FALSE。 
注意:在讀取文件后顯示文件內(nèi)容時,文本中可能含有無法直接顯示的字符,如HTML標(biāo)記。 
這時需要使用htmlspecialchars()函數(shù)將HTML標(biāo)記轉(zhuǎn)化為實體才能顯示文件中的字符。 
2.讀取整個文件 
●file()函數(shù)。file()函數(shù)用于將整個文件讀取到一個數(shù)組中,語法格式如下: 
array file(string $filename [, int $use_include_path [, resource $context ]]) 
說明:本函數(shù)的作用是將文件作為一個數(shù)組返回,數(shù)組中的每個單元都是文件中相應(yīng)的一行,包括換行符在內(nèi), 
如果失敗則返回FALSE。參數(shù)$filename是讀取的文件名,參數(shù)$use_inclue_path和$context的意義與之前介紹的相同 
●readfile()函數(shù)。readfile()函數(shù)用于輸出一個文件的內(nèi)容到瀏覽器中,語法格式如下: 
int readfile(string $filename [, bool $use_include_path [, resource $context ]]) 
●fpassthru()函數(shù)。fpassthru()函數(shù)可以將給定的文件指針從當(dāng)前的位置讀取到EOF,并把結(jié)果寫到輸出緩沖區(qū)。 
要使用這個函數(shù),必須先使用fopen()函數(shù)打開文件,然后將文件指針作為參數(shù)傳遞給fpassthru()函數(shù), 
fpassthru()函數(shù)把文件指針?biāo)赶虻奈募?nèi)容發(fā)送到標(biāo)準(zhǔn)輸出。如果操作成功返回讀取到的字節(jié)數(shù),否則返回FALSE。 
●file_get_contents()函數(shù)。file_get_contents()函數(shù)可以將整個或部分文件內(nèi)容讀取到一個字符串中, 
功能與依次調(diào)用fopen()、fread()及fclose()函數(shù)的功能一樣。語法格式如下: 
string file_get_contents(string $filename [, int $offset [, int $maxlen ]]) 
說明:$filename是要讀取的文件名,可選參數(shù)$offset可以指定從文件頭開始的偏移量, 
函數(shù)可以返回從$offset所指定的位置開始長度為$maxlen的內(nèi)容。如果失敗,函數(shù)將返回FALSE 

3. 讀取一行數(shù)據(jù) 
●fgets()函數(shù)。fgets()函數(shù)可以從文件中讀出一行文本,語法格式如下: 
string fgets(int $handle [, int $length ]) 
說明:$handle是已經(jīng)打開的文件句柄,可選參數(shù)$length指定了返回的最大字節(jié)數(shù),考慮到行結(jié)束符, 
最多可以返回length-1個字節(jié)的字符串。如果沒有指定$length,默認(rèn)為1024個字節(jié) 
●fgetss()函數(shù)與fgets()基本相同,不過fgetss()函數(shù)會嘗試從讀取的文本中去掉任何html和php標(biāo)記。 
●fgetcsv()函數(shù)。fgetcsv()函數(shù)可以讀取指定文件的當(dāng)前行,使用CSV格式解析出字段,并返回一個包含這些字段的數(shù)組。 
語法格式如下: 
array fgetcsv(int $handle [, int $length [, string $delimiter [, string $enclosure ]]]) 
4. 讀取一個字符 
fgetc()函數(shù)。fgetc()函數(shù)可以從文件指針處讀取一個字符,語法格式為: 
string fgetc(resource $handle) 
該函數(shù)返回$handle指針指向的文件中的一個字符,遇到EOF則返回FALSE 
5. 使用指定格式讀取文件 
fscanf()函數(shù)。fscanf()函數(shù)可以讀取文件中的數(shù)據(jù),并根據(jù)指定的格式進(jìn)行格式化,并返回一個數(shù)組。語法格式如下: 
mixed fscanf(resource $handle , string $format [, mixed &$... ]) 
格式字符串中的任何空白會與輸入流中的任何空白匹配。 
這意味著甚至格式字符串中的制表符“\t”也會與輸入流中的一個空格字符匹配。 
6.文件的上傳與下載 
1.文件上傳 
文件上傳可以通過提交html表單來實現(xiàn)。文件上傳結(jié)束后,默認(rèn)存儲在臨時目錄中,這時必須從臨時目錄中刪除或移動到其他地方 
使用PHP的move_uploaded_file()將其移到其它位置上 
move_uploaded_file()函數(shù)語法格式如下: 
bool move_uploaded_file(string $filename , string $destination) 
注意:在將文件移動之前需要檢查文件是否是通過HTTP POST上傳的,這可以用來確保惡意的用戶無法欺騙腳本去訪問本不能訪問的文件, 
這時需要使用is_uploaded_file()函數(shù)。該函數(shù)的參數(shù)為文件的臨時文件名,若文件是通過HTTP POST上傳的,則函數(shù)返回TRUE。 
例4.5 將由HTML表單上傳的GIF圖片文件移動到html目錄中 

復(fù)制代碼代碼如下:


<form enctype="multipart/form-data" action="" method="post"> 
<input type="file" name="myFile"> 
<input type="submit" name="up" value="上傳文件"> 
</form> 
<!-- HTML表單 --> 
<?php 
if(isset($_POST['up'])) 

if($_FILES['myFile']['type']=="image/gif") //判斷文件格式是否為GIF 

if($_FILES['myFile']['error']>0) //判斷上傳是否出錯 
echo "錯誤:".$_FILES['myFile']['error']; //輸出錯誤信息 
else 

$tmp_filename=$_FILES['myFile']['tmp_name']; //臨時文件名 
$filename=$_FILES['myFile']['name']; //上傳的文件名 
$dir="html/"; 
if(is_uploaded_file($tmp_filename)) //判斷是否通過HTTP POST上傳 

if(move_uploaded_file($tmp_filename,$dir.$filename)) //上傳并移動文件 

echo "文件上傳成功!"; 
//輸出文件大小 
echo "文件大小為:". ($_FILES['myFile']['size']/1024)."kb"; 

else 
echo "上傳文件失敗!"; 



else 

echo "文件格式非GIF圖片!"; 


?> 


2.文件下載 
header()函數(shù)的作用是向瀏覽器發(fā)送正確的HTTP報頭,報頭指定了網(wǎng)頁內(nèi)容的類型、頁面的屬性等信息。 
header()函數(shù)的功能很多,這里只列出以下幾點: 
●頁面跳轉(zhuǎn)。如果header()函數(shù)的參數(shù)為“Location: xxx”,頁面就會自動跳轉(zhuǎn)到“xxx”指向的URL地址。例如: 
header("Location: http://www.baidu.com"); //跳轉(zhuǎn)到百度頁面 
header("Location: first.php"); //跳轉(zhuǎn)到工作目錄的first.php頁面 
●指定網(wǎng)頁內(nèi)容。例如,同樣的一個XML格式的文件,如果header()函數(shù)的參數(shù)指定為“Content-type: application/xml”, 
瀏覽器會將其按照XML文件格式來解析。但如果是“Content-type: text/xml”,瀏覽器就會將其看做文本解析。 
header()函數(shù)結(jié)合readfile()函數(shù)可以下載將要瀏覽的文件 
7.其他常用文件函數(shù) 
1.計算文件大小 
filesize()函數(shù)用于計算文件的大小,以字節(jié)為單位 
filesize()函數(shù)結(jié)合fread()函數(shù)可以實現(xiàn)一次讀取整個文件 
2.判斷文件是否存在 
file_exits() 
is_dir()函數(shù)用于判斷給定文件名是否是目錄 
is_file()函數(shù)用于判斷給定文件名是否是文件。 
is_readable()函數(shù)用于判斷給定文件是否可讀。 
is_writeable()用于判斷給定的文件是否可寫 
3.刪除文件 
unlink() 
4.復(fù)制文件 
bool copy(string $source,string $dest),如果目示文件已存在,則將被覆蓋 
5.移動、重命名文件 
除了move_uploaded_file()函數(shù),還有一個rename()函數(shù)也可以移動文件。 
語法格式如下: 
bool rename ( string $oldname , string $newname [, resource $context ] ) 
說明:rename()函數(shù)主要用于對一個文件進(jìn)行重命名,$oldname是文件的舊名,$newname為新的文件名。 
當(dāng)然,如果$oldname與$newname的路徑不相同,就實現(xiàn)了移動該文件的功能 
6.文件指針操作 
PHP中有很多操作文件指針的函數(shù),如rewind()、ftell()、fseek()函數(shù)等。之前用過的feof()函數(shù)用于測試文件指針是否處于文件尾部, 
也屬于文件指針操作函數(shù)。 
rewind()函數(shù)。用于重置文件的指針位置,使指針返回到文件頭。它的參數(shù)只有一個,就是已經(jīng)打開的指定文件的文件句柄。 
ftell()函數(shù)。可以以字節(jié)為單位,報告文件中指針的位置,也就是文件流中的偏移量。它的參數(shù)也是已經(jīng)打開的文件句柄。 
fseek()函數(shù)。可以用于移動文件指針,語法格式如下: 
int fseek ( resource $handle , int $offset [, int $whence ] ) 
例4.8 投票統(tǒng)計 

復(fù)制代碼代碼如下:


<form enctype="multipart/form-data" action="" method="post"> 
<table border="0"> 
<tr><td bgcolor="#CCCCCC"> 
<font size=4 color=blue>當(dāng)前最流行的Web開發(fā)語言:</font> 
</td></tr> 
<tr><td><input type="radio" name="vote" value="PHP">PHP</td></tr> 
<tr><td><input type="radio" name="vote" value="ASP">ASP</td></tr> 
<tr><td><input type="radio" name="vote" value="JSP">JSP</td></tr> 
<tr><td><input type="submit" name="sub" value="請投票"> </td></tr> 
</table> 
</form> 
<?php 
$votefile="EX4_6_vote.txt"; //用于計數(shù)的文本文件$votefile 
if(!file_exists($votefile)) //判斷文件是否存在 

$handle=fopen($votefile,"w+"); //不存在則創(chuàng)建該文件 
fwrite($handle,"0|0|0"); //將文件內(nèi)容初始化 
fclose($handle); 

if(isset($_POST['sub'])) 

if(isset($_POST['vote'])) //判斷用戶是否投票 

$vote=$_POST['vote']; //接收投票值 
$handle=fopen($votefile,"r+"); 
$votestr=fread($handle,filesize($votefile)); //讀取文件內(nèi)容到字符串$votestr 
fclose($handle); 
$votearray=explode("|", $votestr); //將$votestr根據(jù)“|”分割 
echo "<h3>投票完畢!</h3>"; 
if($vote=='PHP') 
$votearray[0]++; //如果選擇PHP,則數(shù)組第1個值加1 
echo "目前PHP的票數(shù)為:<font size=5 color=red>".$votearray[0]."</font><br>"; 
if($vote=='ASP') 
$votearray[1]++; //如果選擇ASP,則數(shù)組第2個值加1 
echo "目前ASP的票數(shù)為:<font size=5 color=red>".$votearray[1]."</font><br>"; 
if($vote=='JSP') 
$votearray[2]++; //如果選擇JSP,則數(shù)組第3個值加1 
echo "目前JSP的票數(shù)為:<font size=5 color=red>".$votearray[2]."</font><br>"; 
//計算總票數(shù) 
$sum=$votearray[0]+$votearray[1]+$votearray[2]; 
echo "總票數(shù)為:<font size=5 color=red>".$sum."</font><br>"; 
$votestr2=implode("|",$votearray); //將投票后的新數(shù)組用“|”連接成字符串$votestr2 
$handle=fopen($votefile,"w+"); 
fwrite($handle,$votestr2); //將新字符串寫入文件$votefile 
fclose($handle); 

else 

echo "<script>alert('未選擇投票選項!')</script>"; 


?> 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲男人的天堂网站 | 免费观看欧美性一级 | 美女秘密网站 | 女人把私密部位张开让男人桶 | 91精品国产高清久久久久久91 | 91桃色视频| 国产香蕉一区二区在线观看 | 草莓绿巨人香蕉茄子芭乐 | 福利姬 magnet | 欧美日韩亚洲成人 | 色噜噜狠狠色综合 | αv在线视频 | 成人人免费夜夜视频观看 | 91视在线国内在线播放酒店 | 欧美国产日产精品免费视频 | 日本高清va不卡视频在线观看 | 日韩网站免费 | 亚洲日本久久一区二区va | 欧美综合另类 | 精品网站一区二区三区网站 | 国产精品欧美一区二区 | 涩涩国产精品福利在线观看 | 久久中文字幕无线观看 | 9lporm自拍视频在线 | 草莓视频深夜释放 | 久久国产视频网 | www亚洲色图 | 成人网中文字幕色 | 久久精品国产亚洲AV热无遮挡 | 男人机机桶女人机机 | 国产日韩视频一区 | 青草香蕉精品视频在线观看 | 金牛网155755水心论坛黄大父母 | 人成午夜免费大片在线观看 | 国产一区二区视频在线观看 | 亚洲成A人片在线观看中文L | ak福利午夜在线观看 | 亚洲视频免费在线观看 | 黄漫在线播放 | 成人免费一区二区三区在线观看 | 日本wwxx|