生活随笔
收集整理的這篇文章主要介紹了
【php】目录操作 文件操作
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
[php]?view plaincopy print?
????php的目錄處理函數(shù)主要包括如下幾個(gè):?? ????①mkdir():創(chuàng)建目錄?? ????②is_dir():判斷給定文件名是否是一個(gè)目錄?? ????③rmdir():刪除目錄?? ????④basename():返回路徑中的文件?? ????⑤dirname():返回路徑中的目錄?? ?? (1)mkdir()?函數(shù)用于創(chuàng)建一個(gè)目錄,成功返回?true,否則返回?false?? ????語法:?? ????????bool?mkdir(?string?dirname?[,?int?mode?]?)?? ????注意:?? ????????可選參數(shù)?mode?表示創(chuàng)建該目錄時(shí)給定的權(quán)限,默認(rèn)是最大權(quán)限?0777??? 案例:??? ????<?php?? ????$dirname?=?'testdir';?? ????if?(mkdir($dirname,?0700))?{?? ????????????echo?"目錄?$dirname?創(chuàng)建成功";?? ????}?else?{?? ????????????echo?"目錄?$dirname?創(chuàng)建失敗";?? ????}?? ?????>?? ?? ?? (2)is_dir()?函數(shù)用于檢查給定文件名是否是一個(gè)目錄,成功返回?true,否則返回?false?? ????語法:?? ????????bool?is_dir(?string?filename?)?? 案例:??? ????<?php?? ????var_dump(is_dir(?'images'?));????? ?????>?? ?? ?? (3)rmdir()?函數(shù)用于刪除一個(gè)目錄,成功返回?true,否則返回?false?? ????語法:?? ????????bool?rmdir(?string?dirname?)?? 案例:??? ????<?php?? ????$dirname?=?'testdir';?? ????if?(rmdir(?$dirname?))?{?? ????????????echo?"目錄?$dirname?刪除成功";?? ????}?else?{?? ????????????echo?"目錄?$dirname?刪除失敗";?? ????}?? ?????>?? ?? ?? (4)basename()?函數(shù)用于返回一個(gè)包含全路徑的字符串中的基本文件名,成功返回字符串,否則返回?false?? ????語法:?? ????????string?basename(?string?path?[,?string?suffix]?)??? ????注意:?? ????????可選參數(shù)?suffix?表示文件后綴,如果文件名后綴是?suffix?,那這一部分也會(huì)被去掉?? 案例:?假定本地訪問該文件?URL?地址為:http:?? ?? ????<?php?? ????echo?$PHP_SELF;??????????? ????echo?basename(?$PHP_SELF?);??????? ????echo?basename(?$PHP_SELF,?'.php');???? ?????>?? ?? (5)dirname()?函數(shù)用于返回一個(gè)包含全路徑的字符串中去掉文件名的目錄,成功返回字符串,否則返回?false。?? ????語法:?? ????????string?dirname(?string?path?)??? 案例:??? ????假定本地訪問該文件?URL?地址為:http:?? ?????? ????<?php?? ????echo?$PHP_SELF;??????? ????echo?dirname(?$PHP_SELF?);???? ?????> ?
[php]?view plaincopy print?
????php提供了豐富的文件處理函數(shù)?? 文件處理主要包括:?? ????①文件的創(chuàng)建/打開?? ????②文件的寫入?? ????③文件讀取?? ????④檢查文件是否存在?? ????⑤文件的拷貝與刪除?? ????⑥獲取文件的大小、類型及修改時(shí)間?? ?? ????fopen()函數(shù)的使用:?? ?? fopen()函數(shù)主要用來打開一個(gè)文件或url地址?? ????語法:?? ????????resource?fopen(string?filename,mode);?? ????????①參數(shù)filename:嘗試打開或創(chuàng)建的文件名?? ????????②參數(shù)mode:打開模式?? ????注意:?? ????1.php中沒有單獨(dú)的文件創(chuàng)建函數(shù),創(chuàng)建或打開文件都是使用fopen()函數(shù)?? ????2.當(dāng)使用fopen()函數(shù)打開一個(gè)文件時(shí),如果文件不存在,則會(huì)嘗試創(chuàng)建該文件,并返回一個(gè)資源;如果打開失敗,返回false?? ?? ?????? 案例1,使用fopen()函數(shù)創(chuàng)建一個(gè)文件:?? ?? ????<?php?? ????if(!file_exists("test.txt")){?? ????????$fh=fopen("test.txt","w");?? ????????fclose($fh);?? ????}?? ?????>?? ?? 案例2,使用fopen()函數(shù)打開url地址?? ?? ????<?php?? ????$fh=fopen("http://www.baidu.com","r");?? ????if($fh){?? ????????while(!feof($fh)){?? ????????????echo?fgets($fh);?? ????????}?? ????}?? ?????>?? ?? ????注意:fopen()返回的只是一個(gè)資源,要想顯示打開的頁面地址,還需要使用fgets()函數(shù)讀取,并使用echo輸出?? ?? ????fwrite()函數(shù)的使用:?? ?? fwrite()函數(shù)主要用來向文件寫入字符串,如果寫入成功,則返回寫入的字符數(shù),否則返回false?? ????格式:?? ????????int?fwrite(resource?handle,string?data,int?length)?? ?????? ????注意:fwrite()函數(shù)將data的內(nèi)容寫入文件指針handle處?? ?? ?????? ?????? ????注意:如果指定了可選參數(shù)length,當(dāng)寫入了length個(gè)字節(jié)或者寫完了data以后,寫入就會(huì)停止?? ?????? ?? ?? 案例1,寫入文件:?? ?? ????<?php?? ????$filename="file.txt";?? ????$content="你好!";?? ????$fh=fopen($filename,"w");?? ????$num=fwrite($fh,$content);?? ?????? ????echo?$num;?? ????fclose($fh);?? ?????>?? ?? 案例2,追加寫入:?? ?? ????<?php?? ????$filename="file.txt";?? ????$content="你好!";?? ????$fh=fopen($filename,"a");?? ????echo?fwrite($fh,$content);?? ????fclose($fh);?? ?????>?? ?? ????file_put_contents()函數(shù)的使用:?? ?? file_put_content():此函數(shù)主要用于一次性將字符串寫入文件或追加字符串到文件,如果成功,返回寫入到文件的字符數(shù),失敗的話返回false?? ?????? ????語法:?? ?????????int?file_put_content(string?filename,string?data,int?flags,resource?context);?? ?? ?? ?? 案例1,寫入文件:?? ?? ????<?php?? ????echo?file_put_contents("file.txt","你好");?? ?????>?? ?? ????注意:?? ????1.如果文件不存在,則創(chuàng)建文件,相當(dāng)于fopen()函數(shù)行為?? ????2.如果文件存在,默認(rèn)將清空文件內(nèi)的內(nèi)容,可設(shè)置?flags?參數(shù)值為?FILE_APPEND?以避免?? ?? 案例2,追加寫入:?? ?????? ????<?php?? ????file_put_contents("file.txt","你好",FILE_APPEND);?? ?????>?? ?? ????文件的讀取函數(shù):?? ?? 文件的讀取函數(shù)主要有如下幾種:?? ????①fread():從文件中讀取數(shù)據(jù)?? ????②fgets():從文件中讀取一行數(shù)據(jù),并將文件指針指向下一行?? ????③fgetc():逐字讀取文件數(shù)據(jù),直到文件結(jié)束?? ????④file():把整個(gè)文件內(nèi)容讀取到一個(gè)數(shù)組中,數(shù)組中的每個(gè)元素都是文件中對(duì)應(yīng)的一行?? ????⑤file_get_contents():將整個(gè)文件內(nèi)容讀入到一個(gè)字符串?? ?? fread():此函數(shù)用于讀取文件?? ?? ????語法:?? ?? ????string?fread(int?handle,int?length);?? ?? ????注意:?? ????????fread()函數(shù)從文件指針handle讀取最多l(xiāng)ength個(gè)字節(jié)。當(dāng)遇到下列情況時(shí),會(huì)停止讀取文件?? ????????①在讀取完最多l(xiāng)ength個(gè)字節(jié)數(shù)時(shí)?? ????????②達(dá)到文件末尾的時(shí)候(eof)?? ?? 案例:從文件中讀取10個(gè)字節(jié)?? ????<?php?? ????$filename?=?"test.txt";?? ????$fh?=?fopen($filename,?"r");?? ????echo?fread($fh,?"10");?? ????fclose($fh);?? ?????>?? ?? ?? fgets():此函數(shù)主要用來從文件中讀取一行數(shù)據(jù),并將文件指針指向下一行?? ?? ????語法:?? ?? ????string?fgets(int?handle,int?length)?? ?? ????注意:?? ????①fgets()?從?handle?指向的文件中讀取一行并返回長度最多為?length-1?字節(jié)的字符串?? ????②碰到換行符(包括在返回值中)、EOF?或者已經(jīng)讀取了?length-1?字節(jié)后停止?? ????③如果沒有指定?length?,則默認(rèn)為?1K?,或者說?1024?字節(jié)?? 案例:?? ????<?php?? ????$fh?=?@fopen("test.txt","r")?or?die("打開?test.txt?文件出錯(cuò)!");?? ?????? ????if($fh){?? ????????????while(!feof($fh))?{?? ????????????????echo?fgets($fh),?'<br?/>';?? ????????????}?? ????}?? ????fclose($fh);?? ?????>?? feof()?函數(shù)測試文件指針是否到了文件結(jié)束的位置,該文件指針必須有效,如果是無效的資源,則會(huì)陷入無限循環(huán)中?? ?? fgetc():此函數(shù)主要用于逐字讀取文件數(shù)據(jù),直到文件結(jié)束?? ?? ????語法:?? ?? ????string?fgetc(resource?handle);?? ?? 案例:從文件中讀取10個(gè)字節(jié)?? ????<?php?? ????$fh?=?@fopen("test.txt","r")?or?die("打開?test.txt?文件出錯(cuò)!");?? ????if($fh){?? ????????????while(!feof($fh))?{?? ?????????????echo?fgetc($fh);?? ????????????}?? ????}?? ????fclose($fh);?? ?????>?? ?? ?? ?? ?? ?? file():此函數(shù)主要用于把整個(gè)文件讀取到一個(gè)數(shù)組中,數(shù)組中的每個(gè)單元都是文件中相應(yīng)的一行,成功,返回一個(gè)數(shù)組;失敗返回false?? ?? ????語法:?? ?? ????array?file(string?filename);?? ?? 案例:從文件中讀取10個(gè)字節(jié)?? ????<?php?? ????$lines?=?file('test.txt');?? ?????? ????foreach?($lines?as?$line_num?=>?$line)?{?? ????????????echo?"Line?#{$line_num}?:?",$line,'<br?/>';?? ????}?? ?????>?? ?? test.txt?文件內(nèi)容:??? ?? 你好!?? 這是第二行文字。?? ?? 瀏覽器顯示:??? ?? Line?#0?:?你好!??? Line?#1?:?這是第二行文字。?? ?? ?? file_get_contents():此函數(shù)主要用于將整個(gè)文件讀入到一個(gè)字符串,成功,則返回一個(gè)字符串;失敗則返回false?? ?? ????語法:?? ?? ????string?file_get_contents(string?filename,int?offset,int?maxlen);?? ?? ?? 案例:?? ????<?php?? ?????? ????echo?nl2br(file_get_contents('test.txt'));?? ?????>?? ?? file_exists():此函數(shù)主要用來檢查一個(gè)文件或目錄是否存在?? ?? ????語法:?? ?? ????bool?file_exists(string?filename);?? ?? 案例:?? ????<?php?? ????$filename?=?'test.txt';?? ????if?(file_exists($filename))?{?? ????????????echo?"文件?$filename?存在";?? ????}?else?{?? ????????????echo?"文件?$filename?不存在";?? ????}?? ?????>?? ?? ?? copy():此函數(shù)主要用來拷貝文件?? ?????????? ????????成功返回true,失敗返回false?? ?? ????語法:?? ?? ????bool?copy(string?file,string?newfile);?? ?? 案例:?? ????<?php?? ????if?(copy('test.txt',?'test.txt.bak'))?{?? ????????????echo?"文件拷貝成功";?? ????}?else?{?? ????????????echo?"文件拷貝失敗";?? ????}?? ?????>?? ?? ?? unlink():此函數(shù)主要用來刪除文件?? ?????????? ????????成功返回true,失敗返回false?? ?? ????語法:?? ?? ????bool?unlink(string?filename);?? ?? 案例:?? ????<?php?? ????unlink("test.txt");??? ?????>?? ?? ?? 獲取文件信息的函數(shù)主要有如下幾種:?? ?? ????①filesize():取得文件大小,成功則返回文件大小的字節(jié)數(shù),失敗返回false?? ?? ????②filetype():取得文件的類型,成功則返回文件的類型,可能的值有file、dir、char、block、link等?? ?? ????③filemtime():取得文件的修改時(shí)間,成功則返回文件上次被修改的時(shí)間戳?? ?? ?? ?? ?? ????問題??? ?? ????如何鎖定文件:在向一個(gè)文本文件中寫入數(shù)據(jù)時(shí),需要先鎖定文件,以防其它用戶同時(shí)也修改此文件內(nèi)容,如何鎖定文件呢??? ?????? ????php中通過flock()函數(shù)實(shí)現(xiàn)文件鎖定,語法如下:?? ?????? ????bool?flock(int?handle,int?operation);?? ?????? ????參數(shù)1:是一個(gè)已經(jīng)打開的文件指針?? ?????? ????參數(shù)2:控制鎖定權(quán)限,有四個(gè)可選值:?? ?????? ????LOCK_SH:取得共享鎖定(讀取程序)?? ????LOCK_EX:取得獨(dú)占鎖定(寫入程序)?? ????LOCK_UN:釋放鎖定?? ????LOCK_NB:防止iflock()在鎖定時(shí)堵塞??
?
?
?
總結(jié)
以上是生活随笔為你收集整理的【php】目录操作 文件操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。