2009-10-12 7 views
0

한 폴더에서 다른 폴더로 모든 파일을 이동하고 싶습니다. 내 코드는 다음과 같습니다. 이 폴더에서 templats 폴더의 모든 파일을 복사 할 폴더를 만들었습니다.한 폴더에서 다른 폴더로 파일 복사

$doit = str_replace(" ", "", $slt['user_compeny_name']); 
mkdir("$doit"); 
$source = "templat/"; 
$target = $doit . "/"; 
$dir = opendir($source); 
while (($file = readdir($dir)) !== false) { 
    copy($source . $file, $target . $file); 
} 

잘 작동합니다. 모든 파일을 복사 할 수 있지만 첫 번째 인수가 디렉토리를 할 수 없다() 함수를 복사 할 수 있음을 경고 제공

는 하나

답변

3
if ($file != "." && $file != "..") { 
// copy 
} 
4

READDIR 다른 DIRS을 포함한 디렉토리에 모든 아이들을 읽을 최대한 빨리 나를 도울 수 , 그리고 '가상'dirs. 그리고 .. (root와 parent dir에 링크, resp.) 당신은 이것들을 점검하고이 인스턴스들에 대해 copy() 함수를 방지해야합니다.

while (($file = readdir($dir)) !== false) 
{ 
    if(!is_dir($file)) 
    { 
     copy($source.$file, $target.$file); 
    } 
} 
3

당신은 디렉토리의 상단에있는 ... 파일을 차지하지 않습니다. 즉, 복사하려고하는 첫 번째 것은 "\ template"입니다. 이는 디렉토리를 복사하려고 시도하는 것과 같습니다. 항목 .documentation에 따라 .. 포함됩니다

if ($file !== "." && $file !== "..") 
... 
3

opendir() :

그냥 같은 것을 추가 할 수 있습니다.

다른 주석의 코드를 사용하여 제외해야합니다.

+0

감사합니다. 지금은 잘 작동하고있다. – Rajanikant

0

나는이 질문이 꽤 오래되었지만 대답도 알고있다. 요청 된 작업을 실행하는 데 사용할 수있는 몇 가지 새로운 메서드를 보여줄 필요가 있다고 느낍니다.

많은 시간 동안 더 많은 기능과 가능성을 가진 개체가 소개되었습니다. 말할 필요도없이, 다른 대답은 여전히 ​​잘 작동합니다. 모든 경로가 스크립트 자체의 작업 디렉토리를 기준으로,이 스크립트 내에서

$szSrcFolder = 'source_folder'; 
$szTgtFolder = 'target_folder'; 

foreach (new DirectoryIterator($szSrcFolder) as $oInfo) 
    if ($oInfo->isFile()) 
     copy($oInfo->getPathname(), $szTgtFolder . DIRECTORY_SEPARATOR . $oInfo->getBasename()); 

가 기억

은 그러나 여기서 우리는이 DirectoryIterator 사용하여 이동합니다.

스스로 설명하는 것이 좋겠지 만 살펴 보겠습니다. 이 몇 줄은 원본 폴더의 전체 내용을 반복하여 파일인지 확인하고 원본 파일 이름을 유지하면서 대상 폴더에 복사합니다.

관련 문제