2017-12-03 32 views
0

私はプログラミングが新しく、自分の個人プロジェクトにはPDFBoxを使用しようとしています。私は基本的にPDFに特定のキーワードがあるかどうかを確認しようとしています。はいの場合は、ファイルを「承認済み」フォルダに転送します。PDFボックス - ファイルの名前を変更できない、またはファイルを削除できない

は、私は以下のコードが書かれて悪いけど、私は正しくファイルを転送したり、削除することはできませんよ。

try (Stream<Path> filePathStream = Files.walk(Paths.get("C://pdfbox_teste"))) { 

     filePathStream.forEach(filePath -> { 

      if (Files.isRegularFile(filePath)) { 

       String arquivo = filePath.toString(); 
       File file = new File(arquivo); 

       try { 
        // Loading an existing document 
        PDDocument document = PDDocument.load(file); 

        // Instantiate PDFTextStripper class 
        PDFTextStripper pdfStripper = new PDFTextStripper(); 

        String text = pdfStripper.getText(document); 

        String[] words = text.split("\\.|,|\\s"); 
        for (String word : words) { 

         // System.out.println(word); 

         if (word.equals("Revisão") || word.equals("Desenvolvimento")) { 


        // System.out.println(word); 
          if(file.renameTo(new File("C://pdfbox_teste//Aprovados//" + file.getName()))){ 

           document.close(); 
           System.out.println("Arquivo transferido corretamente"); 
           file.delete(); 

          }; 

         } 

        } 
        System.out.println("Fim do documento: " + arquivo); 
        System.out.println("----------------------------"); 
        document.close(); 
       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 
     }); 

私は新しいフォルダに転送されたファイルを持っていると思いました。代わりに、ときどき削除されるだけで時々何も起こりません。私はおそらくforeach上にエラーがあると思いますが、私はそれを修正する方法を見つけることができないようです。

答えて

0

renameToを呼び出した後で、私の理解通りにdelete ..を使用しないでください。renameToはmoveコマンドのように動作します。 Plsはあなたが、それはまだ開いている間、ファイルの名前を変更しようとしない、とだけ後でそれを閉じthis

1

を参照してください。

// your code, does not work 
if(file.renameTo(new File("C://pdfbox_teste//Aprovados//" + file.getName()))){ 
    document.close(); 
    System.out.println("Arquivo transferido corretamente"); 
    file.delete(); 
}; 

てみてください最初の文書を閉じるには、そのファイルはもはやあなたのプロセスによってアクセスされ、

// fixed code: 
document.close(); 
if(file.renameTo(new File("C://pdfbox_teste//Aprovados//" + file.getName()))){ 
    System.out.println("Arquivo transferido corretamente"); 
}; 

そしてマヘシュKが指摘したように、あなたがそれを名前を変更した後、あなたは(元)のファイルを削除する必要はありません。そして、その名前を変更することが可能です。名前の変更は元のファイルを削除する必要がある場合は複製しません。名前を変更するだけです。

関連する問題