
RecursiveIteratorIterator의 nextElement 메소드는 디렉토리 내의 모든 파일을 읽은 후 다시 시작하는 것 같은 결과가 나타나는 이유는, 디렉토리 내의 파일을 순회하는 Iterator가 디렉토리 내의 모든 파일을 읽은 후 다시 시작하는 것 때문입니다.
이러한 문제를 해결하는 방법은, 디렉토리 내의 파일을 순회하는 Iterator에 rewind() 메소드를 호출하여 Iterator를 처음부터 다시 시작하는 것입니다.
다음은 디렉토리 내의 파일을 순차적으로 읽어내는 예를 들어서 넣어주세요.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/directory'));
while ($iterator->hasNext()) {
echo $iterator->current()->getPathname() . "n";
$iterator->next();
}
위 코드는 디렉토리 내의 파일을 순차적으로 읽어내지만, nextElement 메소드를 사용하여 다음 파일을 읽을 때, 디렉토리 내의 모든 파일을 읽은 후 다시 시작하는 것 같은 결과를 나타냅니다.
이러한 문제를 해결하기 위해서는, Iterator를 처음부터 다시 시작하는 코드를 추가해야 합니다.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/directory'));
while ($iterator->hasNext()) {
echo $iterator->current()->getPathname() . "n";
$iterator->next();
}
$iterator->rewind(); // Iterator를 처음부터 다시 시작
while ($iterator->hasNext()) {
echo $iterator->current()->getPathname() . "n";
$iterator->next();
}
위 코드는 디렉토리 내의 파일을 순차적으로 읽어내고, Iterator를 처음부터 다시 시작하여 디렉토리 내의 모든 파일을 읽은 후 다시 시작하는 것을 방지합니다.
또한, PHP 7.4 버전에서 RecursiveIteratorIterator의 nextElement 메소드를 사용할 때, 디렉토리 내의 모든 파일을 읽은 후 다시 시작하는 것 같은 결과가 나타나는 것을 방지하기 위해서는, Iterator를 처음부터 다시 시작하는 코드를 추가해야 합니다.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/directory'));
while ($iterator->hasNext()) {
echo $iterator->current()->getPathname() . "n";
$iterator->next();
}
$iterator->rewind(); // Iterator를 처음부터 다시 시작
while ($iterator->hasNext()) {
echo $iterator->current()->getPathname() . "n";
$iterator->next();
}
위 코드는 디렉토리 내의 파일을 순차적으로 읽어내고, Iterator를 처음부터 다시 시작하여 디렉토리 내의 모든 파일을 읽은 후 다시 시작하는 것을 방지합니다.
2025-05-25 09:19