文件操作
1.只能操作服務器的文件
2.文件包含目錄和文件
判斷文件類型
var_dump(filetype("../0529")); //返回文件的類型:目錄dir 文件file, var_dump(is_dir("../11.php")); //判斷路徑是不是目錄,返回布爾類型 var_dump(is_file("../11.php")); //判斷路徑是不是文件,返回布爾類型
文件屬性
echo date("Y-m-d H:i:s",fileatime("../11.php")); //上次訪問時間 返回一個時間戳,使用data格式化 echo date("Y-m-d H:i:s",filectime("../11.php")); //創建時間 echo date("Y-m-d H:i:s",filemtime("../11.php")); //修改時間 echo filesize("../11.php"); //文件大小,字節為單位 var_dump(file_exists("../12.php")); //判斷文件是否存在
文件路徑
當前路徑:./ 上級目錄:../ 下級目錄:目錄/ 根路徑:/
如果是php里面的根(/)路徑代表:磁盤的根
如果是在網頁里面的根(/)路徑代表:服務器的根(www目錄)
echo $_SERVER['DOCUMENT_ROOT']; //取服務器的根路徑 echo basename("../11.php"); //從路徑中獲取帶后綴的文件名 echo basename("../11.php",".php"); //從路徑中獲取不帶后綴的文件名 echo dirname("../0529/aa.php"); //取徑中除去文件名的目錄 var_dump(pathinfo("../0529/aa.php")); //返回目錄信息,格式為數組 echo realpath("../0529/aa.php"); //將相對路徑轉化為絕對路
操作目錄
var_dump(glob("../tp/*.php")); //獲取目錄下所有的文件* 某個后綴的*.php 通過遍歷 glob 輸出子文件 $attr = glob("../tp/*"); for($i=0;$i<count($attr);$i++){ echo $attr[$i]."<br>"; }
使用目錄資源
$dir = opendir("");打開資源目錄
closedir($dir) ;關閉資源目錄
readdir($dir);讀取目錄下的文件,執行一次讀一個
rewinddir($dir); 指針返回最初
通過目錄資源遍歷
echo readdir($dir); //讀取目錄下的文件,執行一次讀一個 $dir = opendir("../tp"); //打開目錄資源 while($wj = readdir($dir)){ echo $wj."<br>"; } closedir($dir); //關閉目錄資源 rewinddir($dir);//將指針重置
注意:
使用readdir()讀取的第一個和第二個內容
第一個是. 代表當前目錄
第二個是.. 代表上級目錄
在使用目錄資源遍歷文件夾的時候要注意將前兩個排除
目錄操作
1.創建目錄(文件夾)
mkdir("./test");
2.刪除目錄(文件夾)只能刪除空的文件夾
rmdir("./test");
3.移動目錄(文件夾)
rename("./test","../test11");
文件操作
touch("./test.txt");//創建文件 copy("./test.txt","../test.txt"); //復制文件 unlink("./test.docx"); //刪除文件 (file_exists( echo file_get_contents("./test.txt"); //獲取文件內容:txt 頁面 echo file_get_contents("http://www.baidu.com"); //遠程獲取內容 file_put_contents("./test.txt","hello"); //向文件寫入內容 readfile("./test.txt"); //獲取文件內容並且直接輸出 var_dump(file("./test.txt")); //讀取文件內容,返回數組,數組的每個元素對應的是一行
對文件內容進行操作
//1.打開文件資源 $fp = fopen("./test.txt","a"); //操作文件 echo fgetc($fp); //每次讀一個字符 while(!feof($fp)) //判斷文件是否讀到末尾 { echo fgetc($fp); } echo fgets($fp); //每次讀一行 echo fgets($fp); echo fread($fp,10); //讀取特定長度 $str = "ni hao dhakhdak \r\n akdhka"; $str = iconv("utf-8","gb2312",$str); fwrite($fp,$str); //2.關閉文件資源 fclose($fp);
文件操作
寫入字節數 = File_put_contents(文件地址, 內容)
寫,文件不存在,自動創建。
默認為替換寫:
支持使用追加寫:
第三個參數使用FILE_APPEND常量表示:
File_get_contents(文件地址)
讀
當操作的文件過大時?
不能一次性操作全部文件內容。上面的函數不適用!
使用下面的函數完成處理:
Fopen();打開文件句柄(PHP與文件間數據流通道)
參數1:文件地址
參數2:打開方式(模式),打開文件后希望完成那種操作,可以在模式位置進行限制。
PHP提供了如下一些的打開模式:
R(read)讀模式
W(write)替換寫模式,將文件內容清零,自動創建不存在的文件。
A(append)追加寫模式
X 替換寫,不會自動創建不存在的文件。(只能打開已經存在的文件)
+擴展,擴展了操作。
R+ 讀寫模式,將文件指針放在文件開頭。
W+ 讀替換寫模式,將文件內容清零,將文件指針放在文件開頭,自動創建不存在的文件。
A+ 讀追加寫模式,寫操作永遠在文件末尾,讀操作受限於文件指針。
X+ 讀替換寫模式,將文件內容清零,將文件指針放在文件開頭,不會自動創建不存在的文件。(只能打開已經存在的文件)
在都可以執行讀寫時,差異在於,打開文件時,初始化的工作不同,針對初始化的文件指針位置,文件內容。
Fread(文件句柄, 長度);讀取,讀取指定長度的字符串內容(單位字節)
Tip:長度是有個最大值。為8192個字節。
Fgets(文件句柄,長度);讀取,讀取指定長度的字符串
長度,指的是會讀取長度-1個字節。
除了長度外,行末也是該函數的終止讀操作條件。取決於先滿足那個條件。
因此也稱讀行函數。最常用。fgetS($handle, 1024)
fgetC(文件句柄);讀取,一次讀取一個字節的數據
讀取指針位置字符,操作時會移動指針。
fwrite(文件句柄,寫入內容);寫,在指定位置寫入內容,通常由文件指針來指示,如果是a模式,不論指針在哪里,只能在末尾寫。
如果w:
fclose();
關閉句柄
Ftell()
獲取指針位置
Fseek()
設置指針位置
R+:
讀寫都受指針影響。寫替換掉原有字節寫。
W+:
清空內容
A+/a:
指針位置具有不確定因素。
A+,讀受指針影響,寫就是追加。
Filemtime(文件地址)
文件的最后修改時間。
Filesize(文件地址)
統計目錄大小。