
RecursiveDirectoryIterator::next 메소드를 사용할 때 디렉토리가 삭제된 경우 다음 항목이 잘못된 디렉토리로 이동하는 이유는 Iterator가 디렉토리 트리 내의 항목을 순회하는 중에 디렉토리가 삭제되는 경우 Iterator가 이전에 방문한 디렉토리 정보를 유지하는 문제 때문입니다.
이러한 현상을 방지하기 위해서는 Iterator를 종료하고 다시 초기화하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
while ($iterator->valid()) {
// 작업을 수행합니다.
$iterator->next();
}
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
while ($iterator->valid()) {
// 작업을 수행합니다.
}
또한, 디렉토리가 삭제되는 경우 Iterator가 이전에 방문한 디렉토리 정보를 유지하는 문제를 해결하기 위해 Iterator를 사용할 때 디렉토리가 삭제된 경우 Iterator를 종료하고 다시 초기화하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
while ($iterator->valid()) {
// 작업을 수행합니다.
if (!file_exists($iterator->getSubPathName())) {
break;
}
$iterator->next();
}
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
while ($iterator->valid()) {
// 작업을 수행합니다.
}
또한, Iterator를 사용할 때 디렉토리가 삭제된 경우 Iterator가 이전에 방문한 디렉토리 정보를 유지하는 문제를 해결하기 위해 Iterator를 사용할 때 디렉토리가 삭제된 경우 Iterator를 종료하고 다시 초기화하는 방법을 사용할 수 있습니다.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
while ($iterator->valid()) {
// 작업을 수행합니다.
if (!file_exists($iterator->getSubPathName())) {
$iterator->rewind();
break;
}
$iterator->next();
}
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
while ($iterator->valid()) {
// 작업을 수행합니다.
}
이러한 방법을 사용하면 디렉토리가 삭제된 경우 Iterator가 이전에 방문한 디렉토리 정보를 유지하는 문제를 해결할 수 있습니다.
2025-07-14 21:03