Maison  >  Article  >  développement back-end  >  (Avancé) Introduction aux fonctions d'exploitation des dossiers et répertoires de fichiers PHP

(Avancé) Introduction aux fonctions d'exploitation des dossiers et répertoires de fichiers PHP

黄舟
黄舟original
2017-02-07 09:49:521550parcourir

Le texte suivant :

fonction d'opération de dossier php

string basename ( string path [, string suffix] )

Étant donné une chaîne contenant le chemin complet d'un fichier, cette fonction renvoie le nom de base du fichier. Si le nom du fichier se termine par un suffixe, cette partie sera également supprimée.
Sous Windows, la barre oblique (/) et la barre oblique inverse () peuvent être utilisées comme séparateurs de répertoires. Dans d'autres circonstances, il s'agit d'une barre oblique (/).

string dirname ( string path )

donne une chaîne contenant le chemin complet d'un fichier. Cette fonction renvoie le nom du répertoire après avoir supprimé le nom du fichier.
Sous Windows, la barre oblique (/) et la barre oblique inverse () peuvent être utilisées comme séparateurs de répertoires. Dans d'autres circonstances, il s'agit d'une barre oblique (/).

array pathinfo ( string path [, int options] )

pathinfo() renvoie un tableau associatif contenant des informations sur le chemin. Inclut les éléments de tableau suivants : dirname, basename et extension.
Vous pouvez spécifier les unités à renvoyer via les options de paramètre. Ils incluent : PATHINFO_DIRNAME, PATHINFO_BASENAME et PATHINFO_EXTENSION. La valeur par défaut est de renvoyer toutes les unités.

string realpath ( string path )

realpath() développe tous les liens symboliques et gère '/./', '/../' et les caractères redondants dans le chemin d'entrée ' /' et renvoie le chemin d'accès absolu normalisé. Il n'y a aucun lien symbolique, composant '/./' ou '/../' dans le chemin renvoyé.
realpath() renvoie FALSE en cas d'échec, par exemple si le fichier n'existe pas. Sur les systèmes BSD, si le chemin n'existe tout simplement pas, PHP ne renverra pas FALSE comme les autres systèmes.

bool is_dir ( string filename )

Renvoie VRAI si le nom de fichier existe et est un répertoire. Si le nom de fichier est un chemin relatif, son chemin relatif est comparé au répertoire de travail actuel.
Remarque : le résultat de cette fonction sera mis en cache. Voir clearstatcache() pour plus d'informations.

resource opendir ( string path [, resource context] )

Ouvre un descripteur de répertoire qui peut être utilisé dans les appels ultérieurs de closeir(), readdir() et rewinddir().

string readdir ( resource dir_handle )

Renvoie le nom du fichier suivant dans le répertoire. Les noms de fichiers sont renvoyés dans l'ordre dans le système de fichiers.

void closedir ( resource dir_handle )

Ferme le flux de répertoire spécifié par dir_handle. Le flux doit avoir été préalablement ouvert par opendir().

void rewinddir ( resource dir_handle )

Réinitialisez le flux de répertoire spécifié par dir_handle au début du répertoire.

array glob ( string pattern [, int flags] )

La fonction glob() trouve tous les chemins de fichiers correspondant au modèle selon les règles utilisées par la fonction libc glob(), similaires aux règles utilisées par les shells normaux. Aucune extension d’abréviation ni substitution de paramètres n’est effectuée.
Renvoie un tableau contenant les fichiers/répertoires correspondants. Renvoie FALSE si une erreur se produit.

Les balises valides sont :
GLOB_MARK - ajoute une barre oblique à chaque élément renvoyé
GLOB_NOSORT - renvoie les fichiers dans leur ordre d'apparition d'origine dans le répertoire (non triés)
GLOB_NOCHECK - renvoie le modèle à rechercher si aucun fichier ne correspond
GLOB_NOESCAPE - métacaractères antislash non échappés
GLOB_BRACE - développe {a,b,c} pour correspondre à 'a', 'b' ou 'c'
GLOB_ONLYDIR - Retour uniquement les entrées de répertoire correspondant au modèle

Remarque : avant PHP 4.3.3, GLOB_ONLYDIR n'était pas disponible sur Windows ou sur d'autres systèmes qui n'utilisent pas la bibliothèque GNU C.
GLOB_ERR - Arrêtez et lisez les messages d'erreur (tels que les répertoires illisibles), ignorez toutes les erreurs par défaut
Remarque : GLOB_ERR a été ajouté dans PHP 5.1.

Opération du répertoire de fichiers php

Nouveau fichier
1. Déterminez d'abord le contenu du fichier à écrire

$content = '你好';


2. Ouvrez ce fichier (le système créera automatiquement ce fichier vide)

//假设新建的文件叫file.txt,而且在上级目录下。w表示‘写文件',$fp下面要用到,表示指向某个打开的文件。
$fp = fopen('../file.txt', 'w');

3. Écrivez la chaîne de contenu dans le fichier

//$fp告诉系统要写入的文件,写入的内容是$content
fwrite($fp, $content);

4. file

fclose($fp);


Remarque : PHP5 fournit une fonction plus pratique file_put_contents Les 4 étapes ci-dessus peuvent être effectuées comme suit :

$content = '你好';
file_put_contents('file.txt',$content);

Supprimer le fichier.

//删除当前目录下的arch目录下的文件abc.txt
unlink('arch/abc.txt');

Remarque : Le système renverra le résultat de l'opération VRAI en cas de succès, FAUX en cas d'échec. Vous pouvez utiliser une variable pour le recevoir afin de savoir si la suppression est réussie :
<.>

$deleteResult = unlink(&#39;arch/abc.txt&#39;);
Obtenir le contenu du fichier


//假设获取的目标文件名是file.txt,而且在上级目录下。获取的内容放入$content。
$content = file_get_contents(&#39;../file.txt&#39;);
Modifier le contenu du fichier

La méthode de fonctionnement est fondamentalement la même que la création d'un nouveau contenu

Renommer un fichier ou un répertoire


//将当前目录下的子目录a下面的文件1.gif重命名为2.gif。
rename(&#39;/a/1.gif&#39;, &#39;/a/2.gif&#39;);
Remarque : Il en va de même pour les répertoires. Le système renverra le résultat de l'opération, VRAI en cas de succès et FAUX en cas d'échec. Vous pouvez utiliser une variable pour le recevoir afin de savoir si le changement de nom a réussi.


$renameResult = rename(&#39;/a/1.gif&#39;, &#39;/a/2.gif&#39;);

Si vous souhaitez déplacer un fichier ou un répertoire, définissez simplement le chemin renommé sur le nouveau chemin :

//将当前目录下的子目录a下面的文件1.gif,移动到当前目录下的子目录b,并且重命名为2.gif。
rename(&#39;/a/1.gif&#39;, &#39;/b/2.gif&#39;);
Cependant, veuillez notez que si le répertoire b n'existe pas, le déplacement échouera.


Copier les fichiers


//将当前目录下的子目录a下面的文件1.gif,复制到当前目录下的子目录b,并命名为2.gif。
copy(&#39;/a/1.gif&#39;, &#39;/b/1.gif&#39;);
Remarque : Cette opération ne peut pas être effectuée sur le répertoire.

Si le fichier cible (/b/1.gif ci-dessus) existe déjà, le fichier original sera écrasé.
Le système renverra le résultat de l'opération, VRAI en cas de succès et FAUX en cas d'échec. Vous pouvez utiliser une variable pour le recevoir afin de savoir si la copie a réussi.

$copyResult = copy(&#39;/a/1.gif&#39;, &#39;/b/1.gif&#39;);
Déplacement d'un fichier ou d'un répertoire

La méthode de fonctionnement est la même que pour renommer

Que le fichier ou le répertoire existe


//检查上级目录下的文件logo.jpg是否存在。
$existResult = file_exists(&#39;../logo.jpg&#39;);
Instructions : Le système renvoie vrai si le fichier existe, faux sinon. La même opération peut être effectuée avec les répertoires.


Obtenir la taille du fichier


//获取上级目录下的文件logo.png的大小。
$size = filesize(&#39;../logo.png&#39;);
Description : Le système renverra un nombre indiquant la taille du fichier en octets.


Créer un nouveau répertoire


//在当前目录下的目录a下面新建目录b。
mkdir(&#39;/a/b&#39;);

说明:系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否新建成功:

$mkResult = mkdir(&#39;/a/b&#39;);

删除目录

//删除当前目录下的目录a下面的子目录b。
rmdir(&#39;/a/b&#39;);

说明:只能删除非空的目录,否则必须先删除目录下的子目录和文件,再删除总目录
系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否删除成功:

$deleteResult = rmdir(&#39;/a/b&#39;);

获取目录中的所有文件名
1、先打开要操作的目录,并用一个变量指向它

//打开当前目录下的目录pic下的子目录common。
$handler = opendir(&#39;pic/common&#39;);

2、循环的读取目录下的所有文件

/*其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename,
为了不陷于死循环,所以还要让$filename !== false。一定要用!==,因为如果某个文件名如果叫&#39;0&#39;,或者某些被系统认为是代表false,用!=就会停止循环*/
while( ($filename = readdir($handler)) !== false )  {
      3、目录下都会有两个文件,名字为&#39;.&#39;和‘..&#39;,不要对他们进行操作
      if($filename != "." && $filename != "..") {
      4、进行处理
      //这里简单的用echo来输出文件名
      echo $filename;
      }
}

5、关闭目录

closedir($handler);

对象是否是目录

//检查上级目录下的目标对象logo.jpg是否是目录。
$checkResult = is_dir(&#39;../logo.jpg&#39;);

说明:如果目标对象是目录系统返回true,否则返回false。上面例子的$checkResult当然是false。

对象是否是文件

//检查上级目录下的目标对象logo.jpg是否是文件。
$checkResult = is_file(&#39;../logo.jpg&#39;);

说明:如果目标对象是文件,系统返回true,否则返回false。上面例子的$checkResult当然是true。

以上就是(进阶篇)php文件夹与文件目录操作函数介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn