Position actuelle: Accueil> Derniers articles> Comment utiliser les fonctions PHP Rewinddir et ReadDir pour lire efficacement le contenu des répertoires?

Comment utiliser les fonctions PHP Rewinddir et ReadDir pour lire efficacement le contenu des répertoires?

gitbox 2025-08-04
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Ce n&#39;est pas lié au contenu de l&#39;articlePHPExemple de code,L&#39;initialisation peut être placée、Configuration et autres contenus</span></span><span>
</span><span><span class="hljs-comment">// Par exemple,Définir le fuseau horaire</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h2>PHP rewinddiretreaddirComment utiliser les fonctions pour lire efficacement le contenu des répertoires?</h2>

<p>existerPHPmilieu,Lors du contenu des répertoires d&#39;exploitation,Les fonctions couramment utilisées incluent <code></span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>()

2. Le rôle de Rewinddir ()

RewindDir () Repoint le pointeur de la poignée du répertoire vers le début du répertoire. Autrement dit, vous pouvez appeler cette fonction lorsque vous avez lu à la fin du répertoire, mais que vous souhaitez à nouveau traverser à partir de zéro.

3. Comment utiliser Rewinddir et Readdir ensemble

Dans les applications pratiques, il est parfois nécessaire de lire le contenu du même répertoire plusieurs fois, tels que le premier filtrage des fichiers qui remplissent les conditions, puis de les traiter. À l'heure actuelle, l'utilisation de RewindDir () peut éviter les appels répétés vers OpenDir () et améliorer l'efficacité.

 
</span><span><span class="hljs-variable">$dir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'/path/to/dir'</span></span><span>);

</span><span><span class="hljs-comment">// La première traversée:Lisez tous les fichiers,Découvrir tous.phpdocument</span></span><span>
</span><span><span class="hljs-variable">$phpFiles</span></span><span> = [];
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">pathinfo</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, PATHINFO_EXTENSION) === </span><span><span class="hljs-string">'php'</span></span><span>) {
        </span><span><span class="hljs-variable">$phpFiles</span></span><span>[] = </span><span><span class="hljs-variable">$file</span></span><span>;
    }
}

</span><span><span class="hljs-comment">// Retour au début du répertoire,Effectuer une deuxième traversée(Si nécessaire)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">rewinddir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);

</span><span><span class="hljs-comment">// La deuxième traversée:打印所有document名,Utilisation de la démonstrationrewinddir</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"document名: <span class="hljs-subst">$file</span></span></span><span>\n";
}

</span><span><span class="hljs-title function_ invoke__">closedir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);

4. Quand est-il plus efficace d'utiliser Rewinddir?
  • Lorsque vous devez parcourir le même répertoire plusieurs fois, évitez d'appeler OpenDir () et Closer () plusieurs fois pour enregistrer les ressources système.
  • Lors de la combinaison de la logique complexe, vous pouvez d'abord traverser le filtrage, puis revenir à l'en-tête du répertoire et effectuer le deuxième cycle d'opérations.

5. Choses à noter
  • La poignée du répertoire doit être fermée après une utilisation et un appel fermé () .
  • Dans certains systèmes ou environnements PHP, l'utilisation de RewindDir () lorsque le contenu du répertoire change peut être incohérent. Il est recommandé de rouvrir la poignée du répertoire après avoir apporté des modifications au répertoire.

Résumer

Grâce à la coopération raisonnable de RewindDir () et ReadDir () , les programmes PHP peuvent lire efficacement et de manière flexible les contenus des répertoires, réduire la consommation de ressources et améliorer la maintenabilité et les performances du code.