개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.27 00:53

RecursiveDirectoryIterator::getSubPath에 관한 질문입니다.

목록
  • 마이크로서비스연구가 15시간 전 2025.07.27 00:53 새글
  • 7
    1
제가 RecursiveDirectoryIterator를 사용하여 디렉토리 내의 파일과 서브 디렉토리를 반복적으로 읽는 중입니다.
getSubPath 메서드는 서브 디렉토리의 경로를 반환하도록 되어 있습니다.
하지만, 서브 디렉토리가 없을 때는 null을 반환하는 것 같습니다.
그런데, 디렉토리가 비어있을 때 null을 반환하는 것은 좋지 않은 것 같아, 디렉토리가 비어있을 때도 서브 디렉토리의 경로를 반환하는 방법이 있을까요?

아래는 예시입니다.

php

$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('디렉토리 경로'));

foreach ($iterator as $file) {

    $subPath = $file->getSubPath();

    // 서브 디렉토리의 경로가 null인 경우를 처리하기 위한 코드를 작성하고 싶습니다.

}


    댓글목록

    profile_image
    나우호스팅  15시간 전



    getSubPath 메서드는 서브 디렉토리가 없을 때 null을 반환하는 것은 PHP의 RecursiveDirectoryIterator 클래스의 기본 동작입니다.

    이러한 동작을 변경하고 싶다면, RecursiveIteratorIterator의 hasChildren 메서드를 사용하여 서브 디렉토리가 있는지 확인할 수 있습니다.

    #hostingforum.kr
    php
    
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('디렉토리 경로'));
    
    foreach ($iterator as $file) {
    
        if ($iterator->hasChildren()) {
    
            $subPath = $file->getSubPath();
    
            // 서브 디렉토리의 경로가 있는 경우에만 처리합니다.
    
        } else {
    
            // 서브 디렉토리가 없는 경우에 처리합니다.
    
        }
    
    }
    
    


    또는, RecursiveDirectoryIterator의 isDir 메서드를 사용하여 현재 항목이 디렉토리인지 확인할 수 있습니다.

    #hostingforum.kr
    php
    
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('디렉토리 경로'));
    
    foreach ($iterator as $file) {
    
        if ($file->isDir()) {
    
            $subPath = $file->getPathname();
    
            // 서브 디렉토리의 경로가 있는 경우에만 처리합니다.
    
        } else {
    
            // 서브 디렉토리가 없는 경우에 처리합니다.
    
        }
    
    }
    
    


    이러한 방법들은 디렉토리가 비어있을 때 서브 디렉토리의 경로를 반환하는 것을 방지할 수 있습니다.

    2025-07-27 00:54

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 39,281건 / 1 페이지

검색

게시물 검색