개발자 Q&A

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

2025.04.01 08:55

FilesystemIterator::next 메서드 이해에 어려움

목록
  • Lambda마법사 1일 전 2025.04.01 08:55
  • 2
    1
제가 현재 PHP에서 FilesystemIterator 클래스를 사용 중인데, 메서드 next()의 동작에 대해 이해가 잘 안 가는 부분이 있습니다.

FilesystemIterator 클래스는 디렉토리나 파일을 순회할 때 사용하는 클래스 인데, next() 메서드는 다음 항목을 반환하는 것으로 알고 있습니다. 하지만, 디렉토리 안의 파일과 서브 디렉토리도 함께 순회할 때, next() 메서드가 디렉토리나 파일을 구분하는 방법을 모르겠습니다.

예를 들어, 디렉토리 'test' 안에 파일 'file1.txt'와 서브 디렉토리 'subdir'가 있다고 가정해 보겠습니다. 이때, FilesystemIterator를 사용하여 디렉토리 'test'를 순회할 때, next() 메서드는 디렉토리 'subdir'를 반환하는지, 파일 'file1.txt'를 반환하는지, 아니면 둘다 반환하는지 궁금합니다.

혹시 FilesystemIterator::next 메서드 동작에 대해 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    FilesystemIterator::next 메서드는 디렉토리나 파일을 순회할 때, 다음 항목을 반환합니다. 디렉토리와 파일을 구분하는 방법은 Iterator의 current() 메서드를 사용하여 현재 항목의 getType() 메서드를 호출하여 반환된 값이 FilesystemIterator::KEY_CURRENT_DIR이면 디렉토리, FilesystemIterator::KEY_CURRENT_DIR_NOT_LINK이면 서브 디렉토리, FilesystemIterator::KEY_CURRENT_FILE이면 파일인지를 확인하면 됩니다.

    예를 들어, 디렉토리 'test' 안에 파일 'file1.txt'와 서브 디렉토리 'subdir'가 있다고 가정해 보겠습니다. 이때, FilesystemIterator를 사용하여 디렉토리 'test'를 순회할 때, next() 메서드는 디렉토리 'subdir'를 반환하지 않습니다. 대신, 서브 디렉토리의 Iterator를 반환합니다.

    FilesystemIterator를 사용하여 디렉토리 'test'를 순회할 때, next() 메서드는 파일 'file1.txt'를 반환합니다.

    #hostingforum.kr
    php
    
    $iterator = new FilesystemIterator('test');
    
    while ($iterator->valid()) {
    
        if ($iterator->current()->getType() == FilesystemIterator::KEY_CURRENT_FILE) {
    
            echo $iterator->current()->getFilename() . "n";
    
        } elseif ($iterator->current()->getType() == FilesystemIterator::KEY_CURRENT_DIR) {
    
            echo $iterator->current()->getFilename() . "n";
    
        } elseif ($iterator->current()->getType() == FilesystemIterator::KEY_CURRENT_DIR_NOT_LINK) {
    
            echo $iterator->current()->getFilename() . "n";
    
        }
    
        $iterator->next();
    
    }
    
    


    FilesystemIterator::next 메서드는 디렉토리나 파일을 순회할 때, 다음 항목을 반환합니다. 디렉토리와 파일을 구분하는 방법은 Iterator의 current() 메서드를 사용하여 반환된 값을 확인하면 됩니다.

    2025-04-01 08:56

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

검색

게시물 검색