Heim  >  Artikel  >  Backend-Entwicklung  >  Grundlegende Operationen von Verzeichnissen und Dateien 1 (44)

Grundlegende Operationen von Verzeichnissen und Dateien 1 (44)

WBOY
WBOYOriginal
2016-08-08 09:23:051001Durchsuche

Verzeichnispfad auflösen

Die Verwendung von PHP-Skripten kann Verzeichnisvorgänge erleichtern, z. B. das Erstellen von Verzeichnissen, das Durchlaufen von Verzeichnissen, das Neubewerten von Verzeichnissen und das Löschen von Verzeichnissen.
??Häufig verwendetes Dateiverzeichnis-Pfadformat:
??$unixPath="/var/www/html/index.php";
//Absoluter Pfad im UNIX-System muss „/ „getrennt“ verwenden
??$winPath="C:\Appserv\www\index.php";
//Im Windows-System wird der absolute Pfad standardmäßig durch „“ getrennt
??$winPath2="C :/Appserv/www/index.php";
//"/" kann auch zur Trennung in Windows-Systemen verwendet werden.
??Achten Sie darauf, absolute und relative Pfade zu verwenden.

PHP-Dateipfad-bezogene Funktionen

??Basisname – gibt den Dateinamenteil des Pfads zurück

?? Syntax: string basename( string path [, string suffix] )
??Bei einer Zeichenfolge mit dem vollständigen Pfad zu einer Datei gibt diese Funktion den Basisdateinamen zurück. Wenn der Dateiname mit einem Suffix endet, wird dieser Teil ebenfalls entfernt.
??dirname – gibt den Verzeichnisteil des Pfads zurück
?? Syntax: string dirname ( string path )
?? Bei einer Zeichenfolge, die den vollständigen Pfad zu einer Datei enthält, gibt diese Funktion den Verzeichnisnamen zurück nach dem Entfernen des Dateinamens.
$path= "/home/httpd/html/index.php";
$file= basename($path);// $file value: "index.php"
$file= basename($path, ".php"); // $file value: "index "
$file= dirname($path); // $file value: "/home/httpd/html "
?>

pathinfo--gibt Dateipfadinformationen zurück
?? Syntax: array pathinfo( string path [, intoptions] )
??pathinfo() gibt ein assoziatives Array zurück Enthält Pfadinformationen. Enthält die folgenden Array-Einheiten: Verzeichnisname, Basisname und Erweiterung.
$path_parts= pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] . // /www/htdocs
echo $path_parts["basename"] . // index.html
echo $path_parts["extension"] ; // html
? realpath – gibt den normalisierten absoluten Pfadnamen zurück
?? Syntax: string realpath( string path)
??realpath() erweitert alle symbolischen Verbindungen und verarbeitet „/./“, „/“ im Eingabepfad .. /' und das zusätzliche '/' und gibt den normalisierten absoluten Pfadnamen zurück. Der zurückgegebene Pfad enthält keine symbolischen Links, keine „/./“- oder „/../“-Komponenten.

Verzeichnisse durchsuchen

opendir – Verzeichnis-Handle öffnen

?? Syntax: Ressource opendir( Zeichenfolgenpfad [, Ressourcenkontext] )
??Öffnen Sie ein Verzeichnis-Handle, das kann in nachfolgenden Aufrufen von closeir(), readdir() und rewinddir() verwendet werden.
??readdir – Einträge aus dem Verzeichnis-Handle lesen
?? Syntax: string readdir(resource dir_handle)
??Gibt den Dateinamen an der aktuellen Verzeichniszeigerposition zurück, gibt nicht „false“ zurück und verschiebt sich Der Zeiger bewegt sich um eine Position nach unten. Dateinamen werden der Reihe nach im Dateisystem zurückgegeben.
??closedir – Verzeichnis-Handle schließen
??Syntax: void geschlossenir(resource dir_handle)
??Schließen Sie den durch dir_handle angegebenen Verzeichnis-Stream. Der Stream muss zuvor mit opendir() geöffnet worden sein.
??rewinddir – Verzeichnis-Handle zurückspulen
??Syntax: void rewinddir(resource dir_handle)
??Setzt den durch dir_handle angegebenen Verzeichnisstream auf den Anfang des Verzeichnisses zurück.

Statistische Verzeichnisgröße

??disk_free_space – gibt den verfügbaren Speicherplatz im Verzeichnis zurück

??Syntax: float disk_free_space( string Verzeichnis)
??gibt eine Datei mit einem Diese Funktion ist eine Zeichenfolge von Verzeichnissen und gibt die Anzahl der verfügbaren Bytes basierend auf dem entsprechenden Dateisystem oder der entsprechenden Festplattenpartition zurück.
??disk_total_space – Gibt die gesamte Festplattengröße eines Verzeichnisses zurück
?? Syntax: float disk_total_space( string Verzeichnis)
?? die Gesamtzahl der Bytes für ein Dateisystem oder eine Festplattenpartition.

Beispiel

<?php<span>//</span><span>自定义一个函数dirSize(),统计传入参数的目录大小</span><span>function dirSize($directory) {
$dir_size</span>=<span>0</span>;<span>//</span><span>初值为0,用来累加各文件大小从而计算目录大小</span><span>if</span>($dir_handle=@opendir($directory)){ <span>//</span><span>打开目录并判断成功打开</span><span>while</span>($filename=readdir($dir_handle)) { <span>//</span><span>循环遍历目录</span><span>if</span>($filename!=<span>"</span><span>.</span><span>"</span> && $filename!=<span>"</span><span>..</span><span>"</span>) { <span>//</span><span>排除特殊的目录</span>$subFile=$directory.<span>"</span><span>/</span><span>"</span>.$filename; <span>//</span><span>将文件和目录相连</span><span>if</span>(is_dir($subFile)) <span>//</span><span>如果为目录</span>$dir_size+=dirSize($subFile); <span>//</span><span>求子目录的大小</span><span>if</span>(is_file($subFile)) <span>//</span><span>如果是文件</span>$dir_size+=filesize($subFile); <span>//</span><span>求出文件的大小并累加</span><span>}
}
closedir($dir_handle); </span><span>//</span><span>关闭文件资源</span><span>return</span> $dir_size; <span>//</span><span>返回计算后的目录大小</span><span>}
}
$dir_size</span>=dirSize(<span>"</span><span>phpMyAdmin</span><span>"</span>); <span>//</span><span>调函数计算目录大小,返回目录大小</span>echo round($dir_size/pow(<span>1024</span>,<span>1</span>),<span>2</span>).<span>"</span><span>KB</span><span>"</span>;<span>//</span><span>将目录字节换为&ldquo;KB&rdquo;单位</span>?></p>Verzeichnisse erstellen und löschen<p></p>mkdir--Neues Verzeichnis<p>?? Syntax: boostkdir(string pathname [, intmode])<br>?? Versuchen Sie, ein neues Verzeichnis zu erstellen, das durch den Pfadnamen angegeben wird. <br>??rmdir – Verzeichnis löschen <br>??Syntax: boolrmdir(string dirname)<br>??Versuchen Sie, das durch dirname angegebene Verzeichnis zu löschen. Das Verzeichnis muss leer sein und über entsprechende Berechtigungen verfügen. Gibt TRUE zurück, wenn erfolgreich, FALSE, wenn fehlgeschlagen. <br>??unlink – Datei löschen <br>??Syntax: boolunlink ( string filename )<br>??Dateiname löschen. Ähnlich der unlink()-Funktion von Unix C. Gibt TRUE zurück, wenn erfolgreich, FALSE, wenn fehlgeschlagen <br></p>
<p></p>
<pre class="brush:php;toolbar:false"><?php<span>//</span><span>自定义函数递归的删除整个目录</span><span>function delDir($directory) {
</span><span>if</span>(file_exists($directory)) { <span>//</span><span>判断目录是否存在,如果存在则执行</span><span>if</span>($dir_handle=@opendir($directory)){ <span>//</span><span>打开返回目录资源,并判断</span><span>while</span>($filename=readdir($dir_handle)){ <span>//</span><span>遍历目录读出目录中信息</span><span>if</span>($filename!=<span>"</span><span>.</span><span>"</span> && $filename!=<span>"</span><span>..</span><span>"</span>) { <span>//</span><span>一定要排除两个特殊目录</span>$subFile=$directory.<span>"</span><span>/</span><span>"</span>.$filename;<span>//</span><span>将目录下文件和当前目录相连</span><span>if</span>(is_dir($subFile)) <span>//</span><span>如果是目录条件则成立</span>delDir($subFile); <span>//</span><span>递归调用自己删除子目录</span><span>if</span>(is_file($subFile)) <span>//</span><span>如果是文件条件则成立</span>unlink($subFile); <span>//</span><span>直接删除这个文件</span><span>}
}
closedir($dir_handle); </span><span>//</span><span>关闭目录资源</span>rmdir($directory); <span>//</span><span>删除空目录</span><span>}
}
}
delDir(</span><span>"</span><span>phpMyAdmin</span><span>"</span>); <span>//</span><span>调用函数,将程序所在目录中phpMyAdmin文件夹删除</span>?>
Verzeichnis kopieren und verschieben

copy--Datei kopieren

?? string dest)
??Dateien von der Quelle zum Ziel kopieren. Gibt TRUE zurück, wenn erfolgreich, FALSE, wenn fehlgeschlagen.
??PHP bietet keine entsprechenden Funktionen zum Kopieren und Verschieben von Verzeichnissen. Bei Bedarf passen Sie die Funktion einfach an.

Grundfunktionen von Dateien

Dateien öffnen und schließen

fopen--打开文件或者URL
??语法:resource fopen( string filename, string mode [, booluse_include_path[, resource zcontext]] )
??fopen() 将filename指定的名字资源绑定到一个流上。如果filename是"scheme://..." 的格式,则被当成一个URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将filename当成一个普通的文件名继续执行下去。
??mode参数指定了所要求到该流的访问类型。
??如果也需要在include_path中搜寻文件的话,可以将可选的第三个参数use_include_path设为'1' 或TRUE。
??如果打开失败,本函数返回FALSE。
fclose--关闭一个已打开的文件指针

写入文件

fwrite--写入文件(可安全用于二进制文件)
??语法:intfwrite( resource handle, string string[, intlength] )
??fwrite() 把string的内容写入文件指针handle处。如果指定了length,当写入了length个字节或者写完了string以后,写入就会停止,视乎先碰到哪种情况。返回写入的字符数,出现错误时则返回FALSE

读取文件内容

??fread--读取文件(可安全用于二进制文件)
??string fread( inthandle, intlength )
??fread() 从文件指针handle读取最多length个字节。该函数在读取完length个字节数,或到达EOF 的时候,或(对于网络流)当一个包可用时就会停止读取文件,视乎先碰到哪种情况。

<?<span>php
$handle </span>= fopen(<span>"</span><span>http://www.example.com/</span><span>"</span>, <span>"</span><span>rb</span><span>"</span><span>);
$contents </span>= <span>""</span><span>;
</span><span>while</span> (!<span>feof($handle)) {
$contents .</span>= fread($handle, <span>8192</span><span>);
}
fclose($handle);
</span>?>

fgets--从文件指针中读取一行
??语法:string fgets( inthandle [,intlength])
??从handle指向的文件中读取一行并返回长度最多为length-1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了length -1 字节后停止(看先碰到那一种情况)。如果没有指定length,则默认为1K,或者说1024 字节。
??fgetc--从文件指针中读取字符
??语法:string fgetc( resource handle )
??返回一个包含有一个字符的字符串,该字符从handle指向的文件中得到。碰到EOF 则返回FALSE。

file--把整个文件读入一个数组中
??语法:array file ( string filename [, intuse_include_path[, resource context]] )
??和readfile()一样,只除了file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败file() 返回FALSE。
??readfile--输出一个文件
??语法:intreadfile( string filename [, booluse_include_path[, resource context]] )
??读入一个文件并写入到输出缓冲。
??返回从文件中读入的字节数。如果出错返回FALSE 并且除非是以@readfile() 形式调用,否则会显示错误信息。

以上就介绍了目录与文件的基本操作一 (44),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn