2010-04-16 6 views
0

J'ai simplement le nom de fichier, sans extension (.txt, .eps, etc.) Le répertoire a plusieurs sous-dossiers. Donc, le fichier pourrait être n'importe où.Je dois trouver un fichier dans le répertoire et le copier dans un répertoire différent

Comment puis-je rechercher le nom de fichier, sans l'extension, et le copier dans un répertoire différent?

+0

Souhaitez-vous pas besoin de Connaissez l'extension? Que se passerait-il si vous vouliez copier 'text.txt' mais le programme a trouvé et copié' text.doc'? –

+0

duplication possible de http://stackoverflow.com/questions/1860393/recursive-file-search-php – Gordon

+0

c'est en fait un bon point. Et si le nom du fichier est unique? – Kel

Répondre

1
+0

Il ne peut pas trouver des lecteurs réseau. Erreur fatale: Uncaught exception « UnexpectedValueException 'avec message' RecursiveDirectoryIterator :: __ construct (X: \ apps) ... n'a pas réussi à ouvrir dir: Aucun fichier ou répertoire ' – Kel

0

un coup d'oeil à ce http://php.net/manual/en/function.copy.php

que pour la recherche de noms de fichiers, pourrait utiliser une base de données pour ouvrir une session où les fichiers sont? et utiliser ce journal pour trouver vos fichiers

+0

J'ai besoin de trouver le fichier en premier dans le répertoire. Par exemple: J'ai le nom de fichier: iamfile01. Je dois trouver d'abord ... Je sais qu'il est sur le disque dur X: mais aucune idée dans quel répertoire il pourrait être en – Kel

0

Je trouve que scandir() est la méthode la plus rapide pour ces opérations:

function findRecursive($folder, $file) { 
    foreach (scandir($folder) as $filename) { 
     $path = $folder . '/' . $filename; 
     # $filename starts with desired string 
     if (strpos($filename, $file) === 0) { 
      return $path; 
     } 
     # search sub-directories 
     if (is_dir($path)) { 
      $result = findRecursive($path); 
      if ($result !== NULL) { 
       return $result; 
      } 
     } 
    } 
} 

Pour copier le fichier, vous pouvez utiliser copy():

copy(findRecursive($folder, $partOfFilename), $targetFile); 
Questions connexes