php目錄操作


目錄操作

 

創建目錄

Mkdir(目錄地址,權限,是否遞歸創建=false);

 

 

刪除目錄

Rmdir(目錄地址)

 

僅僅可以刪除空目錄。(不支持遞歸刪除)

 

移動改名)

Rename(地址,新地址)

 

 

該函數也支持操作文件

 

 

獲取目錄內容(文件)

打開目錄 目錄句柄 = opendir(目錄地址)

目錄句柄:php程序與目錄間的一個聯系

 

依次讀取目錄內文件 文件名 = readdir(目錄句柄);

依次讀取一個文件(子目錄),同時向下移動句柄指針。如果讀取不到返回false

目錄內存在兩個邏輯子目錄 ., .. 分別表示當前目錄和上級目錄!

 

通過配合 循環結構 完成目錄內所有文件的讀取:

 

處理 0 文件名

 

 

關閉目錄 closedir()

 

 

 

遞歸獲取目錄內容

打開某個目錄

依次讀取目錄內文件

如果某個文件為目錄

遞歸對該目錄采用打開,讀取,判斷這個遞歸草

 

遞歸點 如果子文件為目錄,則遞歸

出口 如果目錄中不存在子目錄,則不需要繼續遞歸!

 

 

 

樹狀展示

使用特定數量的縮進達到樹狀目的!

核心問題,計算需要縮進的數量!

縮進級別,與遞歸調用深度保持一致。每當執行遞歸操作找到的文件的縮進級別+1;

語法實現:

增加一個參數,表示當前函數調用的深度級別,每當遞歸+1;

 

 

嵌套

 

使用數組的嵌套,表示層級關系!

例如

 

 

實現

 

 

 

遞歸刪除

Unlink(文件地址)刪除文件。

 

 

 

 

目錄文件名編碼問題:

展示時,將操作系統編碼轉換為響應數據編碼。

Windows gbk,項目utf-8

 

 

代碼的地址中存在中文:需要轉換為系統編碼,才能被文件系統識別:

 

 

由於php基於Linux系統,所以php的文件操作包括文件目錄以及文件兩部分的操作,只能操作服務器的文件

文件操作

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提供了如下一些的打開模式:

Rread)讀模式

Wwrite替換寫模式,將文件內容清零自動創建不存在的文件。

Aappend)追加寫模式

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(文件地址)

 

統計目錄大小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM