현재 위치: > 최신 기사 목록> chdir (), opendir () 및 readdir ()를 결합하여 디렉토리 트래버스 구현의 실제 예

chdir (), opendir () 및 readdir ()를 결합하여 디렉토리 트래버스 구현의 실제 예

gitbox 2025-09-09
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,그냥 모범을 보이십시오</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"PHP 디렉토리 트래버스 예제가 시작됩니다&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * 결합 chdir()、opendir() 그리고 readdir() 디렉토리 트래버스 구현의 실제 예
 *
 * 존재하다 PHP 가운데,操作문서그리고목차是常见需求,특히 디렉토리를 가로 질러야 할 때。
 * chdir() 현재 작업 디렉토리를 변경할 수 있습니다,opendir() 디렉토리 핸들을 열는 데 사용됩니다,
 * readdir() 用于逐个读取목차가운데的문서或子목차。
 *
 * 이 기사는 예를 전달합니다,演示如何결합这三个函数实现목차的遍历。
 */</span>

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">traverseDir</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$path</span></span></span><span>) {
    </span><span><span class="hljs-comment">// 먼저 작업 디렉토리를 변경해보십시오</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">chdir</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"디렉토리로 전환 할 수 없습니다:<span class="hljs-subst">$path</span></span></span><span>&lt;br&gt;";
        </span><span><span class="hljs-keyword">return</span></span><span>;
    }
    
    </span><span><span class="hljs-comment">// 현재 디렉토리를 엽니 다</span></span><span>
    </span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'.'</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</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">"디렉토리 핸들을 열 수 없습니다&lt;br&gt;"</span></span><span>;
        </span><span><span class="hljs-keyword">return</span></span><span>;
    }
    
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"현재 디렉토리: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">getcwd</span></span><span>() . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"디렉토리의 내용은 다음과 같습니다:&lt;br&gt;"</span></span><span>;
    
    </span><span><span class="hljs-comment">// 遍历목차가운데的문서그리고문서夹</span></span><span>
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$entry</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-comment">// 특수 디렉토리를 무시하십시오 . 그리고 ..</span></span><span>
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$entry</span></span><span> === </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-variable">$entry</span></span><span> === </span><span><span class="hljs-string">'..'</span></span><span>) {
            </span><span><span class="hljs-keyword">continue</span></span><span>;
        }
        
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$entry</span></span><span>)) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"[목차] <span class="hljs-subst">$entry</span></span></span><span>&lt;br&gt;";
        } </span><span><span class="hljs-keyword">else</span></span><span> {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"[문서] <span class="hljs-subst">$entry</span></span></span><span>&lt;br&gt;";
        }
    }
    
    </span><span><span class="hljs-title function_ invoke__">closedir</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
}

</span><span><span class="hljs-comment">// 샘플 통화:a가 있다고 가정 해 봅시다 test_dir 목차</span></span><span>
</span><span><span class="hljs-variable">$testPath</span></span><span> = </span><span><span class="hljs-string">'test_dir'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">traverseDir</span></span><span>(</span><span><span class="hljs-variable">$testPath</span></span><span>);
</span></span>