天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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ù)是一個(gè)已經(jīng)打開的目錄句柄,與while循環(huán)可以實(shí)現(xiàn)對(duì)目錄的遍歷
5.獲取指定路徑中的目錄與文件 。
array scandir(string $directory [, int $sorting_order [, resource $context ]])
說明:$directory為指定路徑。參數(shù)$sorting_order默認(rèn)是按字母升序排列,如果設(shè)為1表示按字母的降序排列。
$context是可選參數(shù),是一個(gè)資源變量,可以用stream_context_create()函數(shù)生成,這個(gè)變量保存著與具體的操作對(duì)象有關(guān)的一些數(shù)據(jù)。
函數(shù)運(yùn)行成功則返回一個(gè)包含指定路徑下的所有目錄和文件名的數(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ù)指定的名字資源綁定到一個(gè)流上
●$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級(jí)別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建它。此選項(xiàng)被PH及以后的版本所支持,僅能用于本地文件
'x+'
創(chuàng)建并以讀寫方式打開文件,將文件指針指向文件頭。如果文件已存在,則fopen()調(diào)用失敗并返回FALSE,并生成一條E_WARNING級(jí)別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建它。此選項(xiàng)被PH及以后的版本所支持,僅能用于本地文件
'b'
二進(jìn)制模式,用于連接在其他模式后面。如果文件系統(tǒng)能夠區(qū)分二進(jìn)制文件和文本文件(Windows區(qū)分,而UNIX不區(qū)分),則需要使用到這個(gè)選項(xiàng),推薦一直使用這個(gè)選項(xiàng)以便獲得最大程度的可移植性

●$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)程打開時(shí)(如通過HTTP打開)才使用,它是一個(gè)資源變量,
其中保存著與fopen()函數(shù)具體的操作對(duì)象有關(guān)的一些數(shù)據(jù)。如果fopen()打開的是一個(gè)HTTP地址,
那么這個(gè)變量記錄著HTTP請(qǐng)求的請(qǐng)求類型、HTTP版本及其他頭信息;如果打開的是FTP地址,
記錄的可能是FTP的被動(dòng)/主動(dòng)模式
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個(gè)字節(jié)的數(shù)據(jù)后停止寫入。
●file_put_contents()函數(shù)。php 5還引入了file_put_contents()函數(shù)。這個(gè)函數(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í),可以使用可選參數(shù)$flags和$context,這里不具體介紹。
寫入成功后函數(shù)返回寫入的字節(jié)數(shù),否則返回FALSE。
●fputcsv()函數(shù)。CSV是一種比較常用的文件格式,一般以.csv作為擴(kuò)展名。CSV格式把文件的一行看做是一條記錄,記錄里的字段使用逗號(hào)分隔。
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è)定字段分界符(只允許一個(gè)字符),默認(rèn)為逗號(hào)。
可選的$enclosure參數(shù)設(shè)定字段環(huán)繞符(只允許一個(gè)字符),默認(rèn)為雙引號(hào)
5 文件的讀取
1.讀取任意長度
fread()函數(shù)可以用于讀取文件的內(nèi)容,語法格式如下:
string fread(int $handle, int $length)
說明:參數(shù)$handle是已經(jīng)打開的文件指針,
$length是指定讀取的最大字節(jié)數(shù),$length的最大取值為8192。
如果讀完$length個(gè)字節(jié)數(shù)之前遇到文件結(jié)尾標(biāo)志(EOF),則返回所讀取的字符,并停止讀取操作。
如果讀取成功則返回所讀取的字符串,如果出錯(cuò)返回FALSE。
注意:在讀取文件后顯示文件內(nèi)容時(shí),文本中可能含有無法直接顯示的字符,如HTML標(biāo)記。
這時(shí)需要使用htmlspecialchars()函數(shù)將HTML標(biāo)記轉(zhuǎn)化為實(shí)體才能顯示文件中的字符。
2.讀取整個(gè)文件
●file()函數(shù)。file()函數(shù)用于將整個(gè)文件讀取到一個(gè)數(shù)組中,語法格式如下:
array file(string $filename [, int $use_include_path [, resource $context ]])
說明:本函數(shù)的作用是將文件作為一個(gè)數(shù)組返回,數(shù)組中的每個(gè)單元都是文件中相應(yīng)的一行,包括換行符在內(nèi),
如果失敗則返回FALSE。參數(shù)$filename是讀取的文件名,參數(shù)$use_inclue_path和$context的意義與之前介紹的相同
●readfile()函數(shù)。readfile()函數(shù)用于輸出一個(gè)文件的內(nèi)容到瀏覽器中,語法格式如下:
int readfile(string $filename [, bool $use_include_path [, resource $context ]])
●fpassthru()函數(shù)。fpassthru()函數(shù)可以將給定的文件指針從當(dāng)前的位置讀取到EOF,并把結(jié)果寫到輸出緩沖區(qū)。
要使用這個(gè)函數(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ù)可以將整個(gè)或部分文件內(nèi)容讀取到一個(gè)字符串中,
功能與依次調(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個(gè)字節(jié)的字符串。如果沒有指定$length,默認(rèn)為1024個(gè)字節(jié)
●fgetss()函數(shù)與fgets()基本相同,不過fgetss()函數(shù)會(huì)嘗試從讀取的文本中去掉任何html和php標(biāo)記。
●fgetcsv()函數(shù)。fgetcsv()函數(shù)可以讀取指定文件的當(dāng)前行,使用CSV格式解析出字段,并返回一個(gè)包含這些字段的數(shù)組。
語法格式如下:
array fgetcsv(int $handle [, int $length [, string $delimiter [, string $enclosure ]]])
4. 讀取一個(gè)字符
fgetc()函數(shù)。fgetc()函數(shù)可以從文件指針處讀取一個(gè)字符,語法格式為:
string fgetc(resource $handle)
該函數(shù)返回$handle指針指向的文件中的一個(gè)字符,遇到EOF則返回FALSE
5. 使用指定格式讀取文件
fscanf()函數(shù)。fscanf()函數(shù)可以讀取文件中的數(shù)據(jù),并根據(jù)指定的格式進(jìn)行格式化,并返回一個(gè)數(shù)組。語法格式如下:
mixed fscanf(resource $handle , string $format [, mixed &$... ])
格式字符串中的任何空白會(huì)與輸入流中的任何空白匹配。
這意味著甚至格式字符串中的制表符“/t”也會(huì)與輸入流中的一個(gè)空格字符匹配。
6.文件的上傳與下載
1.文件上傳
文件上傳可以通過提交html表單來實(shí)現(xiàn)。文件上傳結(jié)束后,默認(rèn)存儲(chǔ)在臨時(shí)目錄中,這時(shí)必須從臨時(shí)目錄中刪除或移動(dòng)到其他地方
使用php的move_uploaded_file()將其移到其它位置上
move_uploaded_file()函數(shù)語法格式如下:
bool move_uploaded_file(string $filename , string $destination)
注意:在將文件移動(dòng)之前需要檢查文件是否是通過HTTP POST上傳的,這可以用來確保惡意的用戶無法欺騙腳本去訪問本不能訪問的文件,
這時(shí)需要使用is_uploaded_file()函數(shù)。該函數(shù)的參數(shù)為文件的臨時(shí)文件名,若文件是通過HTTP POST上傳的,則函數(shù)返回TRUE。
例4.5 將由HTML表單上傳的GIF圖片文件移動(dòng)到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) //判斷上傳是否出錯(cuò)
echo "錯(cuò)誤:".$_FILES['myFile']['error']; //輸出錯(cuò)誤信息
else
{
$tmp_filename=$_FILES['myFile']['tmp_name']; //臨時(shí)文件名
$filename=$_FILES['myFile']['name']; //上傳的文件名
$dir="html/";
if(is_uploaded_file($tmp_filename)) //判斷是否通過HTTP POST上傳
{
if(move_uploaded_file($tmp_filename,$dir.$filename)) //上傳并移動(dòng)文件
{
echo "文件上傳成功!";
//輸出文件大小
echo "文件大小為:". ($_FILES['myFile']['size']/1024)."kb";
}
else
echo "上傳文件失敗!";
}
}
}
else
{
echo "文件格式非GIF圖片!";
}
}
?>

2.文件下載
header()函數(shù)的作用是向?yàn)g覽器發(fā)送正確的HTTP報(bào)頭,報(bào)頭指定了網(wǎng)頁內(nèi)容的類型、頁面的屬性等信息。
header()函數(shù)的功能很多,這里只列出以下幾點(diǎn):
●頁面跳轉(zhuǎn)。如果header()函數(shù)的參數(shù)為“Location: xxx”,頁面就會(huì)自動(dòng)跳轉(zhuǎn)到“xxx”指向的URL地址。例如:
header("Location: http://www.baidu.com"); //跳轉(zhuǎn)到百度頁面
header("Location: first.php"); //跳轉(zhuǎn)到工作目錄的first.php頁面
●指定網(wǎng)頁內(nèi)容。例如,同樣的一個(gè)XML格式的文件,如果header()函數(shù)的參數(shù)指定為“Content-type: application/xml”,
瀏覽器會(huì)將其按照XML文件格式來解析。但如果是“Content-type: text/xml”,瀏覽器就會(huì)將其看做文本解析。
header()函數(shù)結(jié)合readfile()函數(shù)可以下載將要瀏覽的文件
7.其他常用文件函數(shù)
1.計(jì)算文件大小
filesize()函數(shù)用于計(jì)算文件的大小,以字節(jié)為單位
filesize()函數(shù)結(jié)合fread()函數(shù)可以實(shí)現(xiàn)一次讀取整個(gè)文件
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.移動(dòng)、重命名文件
除了move_uploaded_file()函數(shù),還有一個(gè)rename()函數(shù)也可以移動(dòng)文件。
語法格式如下:
bool rename ( string $oldname , string $newname [, resource $context ] )
說明:rename()函數(shù)主要用于對(duì)一個(gè)文件進(jìn)行重命名,$oldname是文件的舊名,$newname為新的文件名。
當(dāng)然,如果$oldname與$newname的路徑不相同,就實(shí)現(xiàn)了移動(dòng)該文件的功能
6.文件指針操作
php中有很多操作文件指針的函數(shù),如rewind()、ftell()、fseek()函數(shù)等。之前用過的feof()函數(shù)用于測試文件指針是否處于文件尾部,
也屬于文件指針操作函數(shù)。
rewind()函數(shù)。用于重置文件的指針位置,使指針返回到文件頭。它的參數(shù)只有一個(gè),就是已經(jīng)打開的指定文件的文件句柄。
ftell()函數(shù)。可以以字節(jié)為單位,報(bào)告文件中指針的位置,也就是文件流中的偏移量。它的參數(shù)也是已經(jīng)打開的文件句柄。
fseek()函數(shù)。可以用于移動(dòng)文件指針,語法格式如下:
int fseek ( resource $handle , int $offset [, int $whence ] )
例4.8 投票統(tǒng)計(jì)
復(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="請(qǐng)投票"> </td></tr>
</table>
</form>
<?php
$votefile="EX4_6_vote.txt"; //用于計(jì)數(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個(gè)值加1
echo "目前php的票數(shù)為:<font size=5 color=red>".$votearray[0]."</font><br>";
if($vote=='ASP')
$votearray[1]++; //如果選擇ASP,則數(shù)組第2個(gè)值加1
echo "目前ASP的票數(shù)為:<font size=5 color=red>".$votearray[1]."</font><br>";
if($vote=='JSP')
$votearray[2]++; //如果選擇JSP,則數(shù)組第3個(gè)值加1
echo "目前JSP的票數(shù)為:<font size=5 color=red>".$votearray[2]."</font><br>";
//計(jì)算總票數(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('未選擇投票選項(xiàng)!')</script>";
}
}
?>

php技術(shù)php 目錄與文件處理-鄭阿奇(續(xù)),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲午夜AV久久久精品影院色戒 | 免费xxx成年大片 | 国产精品麻豆a啊在线观看 国产精品麻豆AV | AV无码九九久久 | 天天看学生视频 | 国产电影无码午夜在线播放 | 亚洲人美女肛交真人全程 | 欧洲最大无人区免费高清完整版 | 亚洲 欧美 国产 视频二区 | 国产主播福利一区二区 | 精品国产成人a区在线观看 精品国产成人AV在线看 | AV97最新无码喷水叫床 | 最新中文字幕在线视频 | 两性色午夜视频免费国产 | 精品麻豆一卡2卡三卡4卡乱码 | xx顶级欧美熟妞xxhd | 69久久国产精品热88人妻 | 久久在精品线影院 | 影音先锋 av天堂 | 免费乱理伦片在线观看八戒 | 久久精品麻豆国产天美传媒果冻 | 亚洲精品偷拍影视在线观看 | 一级毛片免费播放 | av在线观看地址 | 日本50人群体交乱 | 扒开美女下面粉嫩粉嫩冒白浆 | 免费精品国产人妻国语 | 嫩草影院久久99 | 亚洲国产成人精品无码区5566 | 99re精品视频在线播放视频 | 色多多污污在线观看网站 | 欧美激情视频在线观看一区二区三区 | 八妻子秋霞理在线播放 | 国产精品高潮呻吟AV久久96 | 最近中文字幕高清中文 | AV无码九九久久 | 久久高清内射无套 | 日本人奶水中文影片 | 揉抓捏打抽插射免费视频 | 国产在线AV一区二区香蕉 | 免费A级毛片无码无遮挡内射 |