2017-05-15 17 views
1

1つのディレクトリ(文字列のリスト)のファイル名の文字列検索に基づいてファイルをコピー&ペーストしようとすると、NoSuchFileExceptionが表示されます。そのフォルダに一致するファイル私はかなり長い間試してきたので、誰もがこの問題を見つけることができるでしょうか?ファイルパスが長すぎる可能性がありますか?Javaのコピーと貼り付け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

'文字列strNewFile = "G:\\テスト\\" +タイプ+ "\\" +用語+ "\\" +名;'よろしいですディレクトリツリーが存在するかどうかJavaはあなたのためにそれを作成しません – BackSlash

+0

ありがとう、私はそれを試みるつもりです。 – Olive

答えて

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

多分あなたはそれを手動で作成する必要があり、ディレクトリツリーが存在しない、とJavaはあなたのためにそれを作成しません。

あなたはこのように行うことができます

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

ありがとう、それは問題を解決します。 – Olive

関連する問題