2017-05-15 2 views
1

J'ai reçu une exception NoSuchFileException en essayant de copier et coller des fichiers basés sur la recherche de noms de fichiers dans un répertoire (une liste de chaînes), créer un nouveau dossier basé sur la chaîne de recherche, copier et coller les fichiers correspondants à ce dossier. Est-ce que n'importe qui pourrait repérer le problème avec ceci comme j'ai essayé pendant un certain temps? Se pourrait-il que les chemins de fichiers soient trop longs?Java copier et coller des fichiers NoSuchFileException

File[] files = new File(strSrcDir).listFiles(); 

    for (String term : list) { 

     for (File file : files) { 
      if (file.isFile()) { 
       String name = file.getName(); 
       Pattern pn = Pattern.compile(term, Pattern.CASE_INSENSITIVE); 
       Matcher m = pn.matcher(name); 
       if (m.find()) { 
        try { 
         String strNewFile = "G:\\Testing\\" + type + "\\" + term + "\\" + name; 
         File newFile = new File(strNewFile); 
         Path newFilePath = newFile.toPath(); 
         Path srcFilePath = file.toPath(); 
         Files.copy(srcFilePath, newFilePath); 
        } catch (UnsupportedOperationException e) { 
         System.err.println(e); 
        } catch (FileAlreadyExistsException e) { 
         System.err.println(e); 
        } catch (DirectoryNotEmptyException e) { 
         System.err.println(e); 
        } catch (IOException e) { 
         System.err.println(e); 
        } catch (SecurityException e) { 
         System.err.println(e); 
        } 
       } 
      } 
     } 

    } 
+1

'chaîne strNewFile = "G: \\ test \\" + type + "\\" + terme + "\\" + nom;' Êtes-vous sûr que l'arborescence de répertoires existe? Java ne le créera pas pour vous – BackSlash

+0

Merci, je vais essayer ça. – Olive

Répondre

1
String strNewFile = "G:\\Testing\\" + type + "\\" + term + "\\" + name; 

probablement l'arborescence des répertoires n'existe pas, et Java ne crée pas pour vous, vous devez créer manuellement.

Vous pouvez faire comme ceci:

new File("G:\\Testing\\" + type + "\\" + term).mkdirs(); // create the directory tree if it doesn't exist 

String strNewFile = "G:\\Testing\\" + type + "\\" + term + "\\" + name; 
File newFile = new File(strNewFile); 
Path newFilePath = newFile.toPath(); 
Path srcFilePath = file.toPath(); 
Files.copy(srcFilePath, newFilePath); 
+0

Merci beaucoup, cela résout le problème. – Olive