Delete file * .pdf

0

I am making an application that opens a * .pdf file, so I apply a filter on it, however I am having a hard time deleting this file once it has already been read. I did the same with a * .txt file and it worked fine. If you have any idea what might be happening, thank you

if (arquivos[x].getName().endsWith("pdf")) {
                    File f = arquivos[x];
                    PDFParser parser = new PDFParser(new RandomAccessBufferedFileInputStream(f.getAbsolutePath()));
                    parser.parse();
                    COSDocument cosDoc = parser.getDocument();
                    PDFTextStripper pdfStripper = new PDFTextStripper();
                    PDDocument pdDoc = new PDDocument(cosDoc);
                    FileWriter arq = new FileWriter("C:\Tratados\" + f.getName().replace(".pdf", ".txt"));
                    PrintWriter gravarArq = new PrintWriter(arq);

                    //<editor-fold defaultstate="collapsed" desc="ARRAYS">
                    List<String> linhasGravadas = new ArrayList<>();
                    List<Integer> AutFalse = new ArrayList<>();
                    List<Integer> DataFalse = new ArrayList<>();
                    List<Integer> HoraFalse = new ArrayList<>();
                    List<Integer> POSFalse = new ArrayList<>();
                    List<Integer> Conjunto = new ArrayList<>();
                    List<Integer> Resultado = new ArrayList<>();
                    List<Integer> ResultadoPOSAUT = new ArrayList<>();
                    //</editor-fold>

                    int Aut = 0, vAut = 0, vData = 0, vHora = 0, vPOS = 0, vConj = 0, vResultado = 0, vResultadoPOSAUT = 0;
                    for (int i = 1; i <= pdDoc.getNumberOfPages(); i++) {
                        pdfStripper.setStartPage(i);
                        pdfStripper.setEndPage(i);
                        String parsedText = pdfStripper.getText(pdDoc);

                        String aut = "";
                        String hora = "";
                        String data = "";
                        String pos = "";
                        String valor = "";
                        String est = "";
                        String valorTotal = "";
                        int POS = 0, HORA = 0, DATA = 0, AUT = 0;

                        gravarArq.println("Pagina: " + i);

                        //<editor-fold defaultstate="collapsed" desc="MATCHERS">
                        Matcher matcherPOS = Pattern.compile("\b[1-9]\d{7}\b\s").matcher(parsedText);
                        Matcher matcherValor = Pattern.compile("t\s\d{1}[.|,]\d{2}\b|t\s\d{2}[.|,]\d{2}\b|t\s\d{3}[.|,]\d{2}\b|t[:|;]\s\d{1}[.|,]\d{2}\b|t[:|;]\s\d{2}[.|,]\d{2}\b|t[:|;]\s\d{3}[.|,]\d{2}\b").matcher(parsedText);
                        Matcher matcherValorTotal = Pattern.compile("l[:;.,]\s\d{1}[.,:;]\d{2}\b|l[:.,;]\s\d{2}[.:;,]\d{2}\b|l[:.,;]\s\d{3}[.:;,]\d{2}\b").matcher(parsedText);
                        Matcher matcherEst = Pattern.compile("\b0\d{14}").matcher(parsedText);
                        Matcher matcherData = Pattern.compile("[0-2]\d{1}[,.;:/]0\d{1}[,.;:/]20\d{1}\d{1}|3[0-1][,.;:/]0\d{1}[,.;:/]20\d{1}\d{1}|[0-2]\d{1}[,.;:/]1[0-2][,.;:/]20\d{1}\d{1}|3[0-1][,.;:/]1[0-2][,.;:/]20\d{1}\d{1}"/*"\b\d{8}\b"*/).matcher(parsedText);
                        Matcher matcherHora = Pattern.compile("\s2[0-3][',;:.][0-5]\d{1}[',;:.][0-5]\d{1}\w\b|\s[0-1]\d{1}[',;:.][0-5]\d{1}[',;:.][0-5]\d{1}\w\b|\s2[0-3]\s[',;:.][0-5]\d{1}\s[',;:.][0-5]\d{1}\w\b|\s[0-1]\d{1}\s[',;:.][0-5]\d{1}\s[',;:.][0-5]\d{1}\w\b|\s2[0-3][',;:.]\s[0-5]\d{1}[',;:.]\s[0-5]\d{1}\w\b|\s1[0-9][',;:.]\s[0-5]\d{1}[',;:.][0-5]\d{1}\w\b|\s[0-1]\d{1}[',;:.]\s[0-5]\d{1}[',;:.]\s[0-5]\d{1}\w\b|\s2[0-3][',;:.][0-5]\d{1}[0-5]\d{1}\w\b|\s[0-1]\d{1}[',;:.][0-5]\d{1}[0-5]\d{1}\w\b|\s2[0-3][0-5]\d{1}[',;:.][0-5]\d{1}\w\b|\s[0-1]\d{1}[0-5]\d{1}[',;:.][0-5]\d{1}\w\b|\s2[0-3]\s[',;:.]\s[0-5]\d{1}\s[',;:.][0-5]\d{1}\w\b|\s2[0-3]\s[',;:.]\s[0-5]\d{1}\s[',;:.]\s[0-5]\d{1}\w\b|\s2[0-3][',;:.]\s[0-5]\d{1}[',;:.][0-5]\d{1}\w\b|\s2[0-3][',;:.][0-5]\d{1}[',;:.][0-5]\d{1}\b|\s[0-1]\d{1}[',;:.][0-5]\d{1}[',;:.][0-5]\d{1}\b|\s2[0-3]\s[',;:.][0-5]\d{1}\s[',;:.][0-5]\d{1}\b|\s[0-1]\d{1}\s[',;:.][0-5]\d{1}\s[',;:.][0-5]\d{1}\b|\s2[0-3][',;:.]\s[0-5]\d{1}[',;:.]\s[0-5]\d{1}\b|\s1[0-9][',;:.]\s[0-5]\d{1}[',;:.][0-5]\d{1}\b|\s[0-1]\d{1}[',;:.]\s[0-5]\d{1}[',;:.]\s[0-5]\d{1}\b|\s2[0-3][',;:.][0-5]\d{1}[0-5]\d{1}\b|\s[0-1]\d{1}[',;:.][0-5]\d{1}[0-5]\d{1}\b|\s2[0-3][0-5]\d{1}[',;:.][0-5]\d{1}\b|\s[0-1]\d{1}[0-5]\d{1}[',;:.][0-5]\d{1}\b|\s2[0-3]\s[',;:.]\s[0-5]\d{1}\s[',;:.][0-5]\d{1}\b|\s2[0-3]\s[',;:.]\s[0-5]\d{1}\s[',;:.]\s[0-5]\d{1}\b|\s2[0-3][',;:.]\s[0-5]\d{1}[',;:.][0-5]\d{1}\b").matcher(parsedText);
                        Matcher matcherAut = Pattern.compile(/*"\s\b\d{9}\b|*/"\s\b00\d{7}\b\s|\b[3-9]\d{8}\b\s").matcher(parsedText);
                        //</editor-fold>

                        //<editor-fold defaultstate="collapsed" desc="MATCHER DATA">
                        if (!matcherData.find()) {
                            gravarArq.println("Data: Não encontrada");
                            DataFalse.add(i);
                            vData = vData + 1;
                        } else {
                            Pattern patternData = Pattern.compile("a");
                            Scanner scannerData = new Scanner(matcherData.group().replace(".", "/").replace(",", "/").replace(";", "/").replace(":", "/")).useDelimiter(patternData);
                            Matcher matcher3 = patternData.matcher(data);
                            while (scannerData.hasNext()) {
                                data = scannerData.next();
                                if (!linhasGravadas.contains(data)) {
                                    linhasGravadas.add(data);
                                    DATA = DATA + 1;
                                    gravarArq.println("Data: " + data);
                                }
                            }
                        }
                        //</editor-fold>

                        //<editor-fold defaultstate="collapsed" desc="MATCHER HORA">
                        if (!matcherHora.find()) {
                            gravarArq.println("Hora: Não encontrada");
                            HoraFalse.add(i);
                            vHora = vHora + 1;
                        } else {

                            Pattern patternHora = Pattern.compile("\s"); // Segundo Filtro (Elimina os que não começam com 3|4)
                            Scanner scannerHora = new Scanner(matcherHora.group().replace("'", "").replace(";", "").replace(",", "").replace(".", "").replace(" ", "").replace(":", "")).useDelimiter(patternHora);
                            Matcher matcher7 = patternHora.matcher(hora);
                            while (scannerHora.hasNext()) {
                                hora = scannerHora.next();
                                if (!linhasGravadas.contains(hora)) {
                                    StringBuilder format = new StringBuilder();
                                    format.append(hora.substring(0, 2)).
                                            append(":").append(hora.substring(2, 4)).
                                            append(":").append(hora.substring(4, 6));
                                    linhasGravadas.add(hora);
                                    HORA = HORA + 1;
                                    gravarArq.println("Hora: " + format);
                                }
                            }
                        }
                        //</editor-fold>

                        //<editor-fold defaultstate="collapsed" desc="MATCHER POS">
                        if (!matcherPOS.find()) {
                            gravarArq.println("POS: Não encontrado");
                            POSFalse.add(i);
                            vPOS = vPOS + 1;
                        } else {
                            Pattern patternPOS = Pattern.compile("\s^0.*|^0.*");
                            Scanner scannerPOS = new Scanner(matcherPOS.group()).useDelimiter(patternPOS);
                            Matcher matcher4 = patternPOS.matcher(pos);
                            while (scannerPOS.hasNext()) {
                                pos = scannerPOS.next();
                                if (!linhasGravadas.contains(pos)) {
                                    linhasGravadas.add(pos);
                                    POS = POS + 1;
                                    gravarArq.println("POS: " + pos);
                                }
                            }
                        }
                        //</editor-fold>

                        //<editor-fold defaultstate="collapsed" desc="MATCHER ESTABELECIMENTO">
                        if (!matcherEst.find()) {
                            gravarArq.println("Estabelecimento: Não encontrado");
                        } else {
                            Pattern patternEst = Pattern.compile("l:\s"/*"\s^[0126789].*|^[0126789].*"*/); // Segundo Filtro (Elimina os que não começam com 3|4)
                            Scanner scannerEst = new Scanner(matcherEst.group()).useDelimiter(patternEst);
                            Matcher matcher6 = patternEst.matcher(est);
                            while (scannerEst.hasNext()) {
                                est = scannerEst.next();
                                if (!linhasGravadas.contains(est)) {
                                    linhasGravadas.add(est);
                                    gravarArq.println("Estabelecimento: " + est.replace(",", "."));
                                }
                            }
                        }
                        //</editor-fold>

                        //<editor-fold defaultstate="collapsed" desc="MATCHER AUTORIZAÇÃO">
                        if (!matcherAut.find()) {
                            gravarArq.println("Autorização: Não encontrado");
                            AutFalse.add(i);
                            vAut = vAut + 1;
                            AUT = AUT + 1;
                        } else {
                            Pattern pattern = Pattern.compile("\s^0.*|^0.*"); // Segundo Filtro (Elimina os que não começam com 3|4)
                            Scanner scanner = new Scanner(matcherAut.group()).useDelimiter(pattern);
                            Matcher matcher2 = pattern.matcher(aut);
                            while (scanner.hasNext()) {
                                aut = scanner.next();
                                if (!linhasGravadas.contains(aut)) {
                                    linhasGravadas.add(aut);
                                    gravarArq.println("Autorização: " + aut);
                                    Aut = Aut + 1;
                                }
                            }
                        }
                        //</editor-fold>

                        //<editor-fold defaultstate="collapsed" desc="MATCHER ABASTECIMENTO">
                        if (!matcherValor.find()) {
                            gravarArq.println("Abastecimento: Não encontrado");
                        } else {
                            Pattern patternValor = Pattern.compile("t\s|t[:|;]\s"/*"\s^[0126789].*|^[0126789].*"*/); // Segundo Filtro (Elimina os que não começam com 3|4)
                            Scanner scannerValor = new Scanner(matcherValor.group()).useDelimiter(patternValor);
                            Matcher matcher5 = patternValor.matcher(valor);
                            while (scannerValor.hasNext()) {
                                valor = scannerValor.next();
                                if (!linhasGravadas.contains(valor)) {
                                    linhasGravadas.add(valor);
                                    gravarArq.println("Abastecimento: " + valor.replace(".", ","));
                                }
                            }
                        }
                        //</editor-fold>

                        //<editor-fold defaultstate="collapsed" desc="MTACHER VALOR TOTAL">
                        if (!matcherValorTotal.find()) {
                            gravarArq.println("Valor Total: Não encontrado");
                            gravarArq.println();
                        } else {
                            Pattern patternValorTotal = Pattern.compile("l[:;.,]\s"/*"\s^[0126789].*|^[0126789].*"*/); // Segundo Filtro (Elimina os que não começam com 3|4)
                            Scanner scannerValorTotal = new Scanner(matcherValorTotal.group()).useDelimiter(patternValorTotal);
                            Matcher matcher5 = patternValorTotal.matcher(valorTotal);
                            while (scannerValorTotal.hasNext()) {
                                valorTotal = scannerValorTotal.next();
                                if (!linhasGravadas.contains(valorTotal)) {
                                    linhasGravadas.add(valorTotal);
                                    gravarArq.println("Valor Total: " + valorTotal.replace(".", ","));
                                    gravarArq.println();
                                }
                            }
                        }
                        //</editor-fold>
                        if (DATA == 1 && HORA == 1 && POS == 1) {
                            Conjunto.add(i);
                            vConj = vConj + 1;
                        }
                        if (DATA == 1 && HORA == 1 && POS == 1 && AUT == 1) {
                            Resultado.add(i);
                            vResultado = vResultado + 1;
                        }
                        if (HORA == 1 && POS == 1 && AUT == 1) {
                            ResultadoPOSAUT.add(i);
                            vResultadoPOSAUT = vResultadoPOSAUT + 1;
                        }
                        linhasGravadas.clear();
                    }
                    gravarArq.println();
                    gravarArq.println("Resumo Lote: " + f.getName().replace(".pdf", ""));
                    gravarArq.println();
                    gravarArq.println("Nº Slips: " + pdDoc.getNumberOfPages());
                    gravarArq.println("Autorizações encontradas: " + Aut);
                    gravarArq.println("Autorizações não encontradas: " + vAut);
                    gravarArq.println("    - Nº Páginas: " + Arrays.toString(AutFalse.toArray()));
                    AutFalse.clear();

                    //<editor-fold defaultstate="collapsed" desc="COMPARAÇÃO DO ARQUIVO *.TIF E DO *.PDF">
                    Files.walk(Paths.get("C:\teste2")).forEach(filePath -> {
                        long tempo = 0, total = 0;
                        String arqA = filePath.getFileName().toString();
                        String arqB = f.getName().toString();

                        if (arqA.toLowerCase().replace(".bmp", "").equals(arqB.replace(".pdf", "")) || (arqA.toLowerCase().replace(".tif", "").equals(arqB.replace(".pdf", "")))) {
                            if (Files.isRegularFile(filePath)) {
                                BasicFileAttributes attributes = null;
                                try {
                                    attributes = Files.readAttributes(filePath, BasicFileAttributes.class);
                                } catch (IOException ex) {
                                    Logger.getLogger(LeituraPDF_Filtro_Validacao.class.getName()).log(Level.SEVERE, null, ex);
                                }
                                FileTime creationTime = attributes.lastModifiedTime();
                                tempo = creationTime.toMillis();
                                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                                gravarArq.println("Inicio Processo: " + sdf.format(tempo));
                                Calendar horaFinal = Calendar.getInstance();
                                String horaFinalizada = new SimpleDateFormat("HH:mm:ss").format(horaFinal.getTime());
                                gravarArq.println("Final Processo: " + horaFinalizada);
                                total = horaFinal.getTimeInMillis() - creationTime.toMillis();
                                SimpleDateFormat sdf2 = new SimpleDateFormat("mm:ss");
                                gravarArq.println("Total: 00:" + sdf2.format(total));
                            }

                        }
                    });
                    //</editor-fold>

                    gravarArq.println();
                    gravarArq.println("------ Resumo Version 0.2 ------");
                    gravarArq.println();
                    float Slips = pdDoc.getNumberOfPages();
                    float somaAutPosDataHora = 0;
                    float somaAutPosHora = 0;
                    if (vResultado == 0) {
                        somaAutPosDataHora = 0;
                    } else {
                        somaAutPosDataHora = Aut + vResultado;
                    }
                    if (vResultadoPOSAUT == 0) {
                        somaAutPosHora = 0;
                    } else {
                        somaAutPosHora = Aut + vResultadoPOSAUT;
                    }
                    float resultadoPorcentagem = somaAutPosDataHora / Slips;
                    float resultadoPorcentagemPosHora = somaAutPosHora / Slips;
                    String porcentagemDataPosHora = String.format("%.2f", resultadoPorcentagem * 100);
                    String porcentagemPosHora = String.format("%.2f", resultadoPorcentagemPosHora * 100);

                    //<editor-fold defaultstate="collapsed" desc="SALVAR DODOS NO ARQUIVO *.TXT">
                    gravarArq.println("Páginas sem autorização mas com Data/Hora/POS: " + vResultado);
                    gravarArq.println("-- Porcentagem de Acerto: " + porcentagemDataPosHora + "% --");
                    gravarArq.println("    - Nº Páginas: " + Arrays.toString(Resultado.toArray()));
                    gravarArq.println();
                    gravarArq.println("Páginas sem autorização mas com Hora/POS: " + vResultadoPOSAUT);
                    gravarArq.println("-- Porcentagem de Acerto: " + porcentagemPosHora + "% --");
                    gravarArq.println("    - Nº Páginas: " + Arrays.toString(ResultadoPOSAUT.toArray()));
                    gravarArq.println();
                    gravarArq.println("Páginas onde foi encontrado (Data/Hora/POS): " + vConj);
                    gravarArq.println("    - Nº Páginas: " + Arrays.toString(Conjunto.toArray()));
                    gravarArq.println();
                    gravarArq.println("Datas não encontradas: " + vData);
                    gravarArq.println("    - Nº Páginas: " + Arrays.toString(DataFalse.toArray()));
                    gravarArq.println();
                    gravarArq.println("Horas não encontradas: " + vHora);
                    gravarArq.println("    - Nº Páginas: " + Arrays.toString(HoraFalse.toArray()));
                    gravarArq.println();
                    gravarArq.println("POS não encontradas: " + vPOS);
                    gravarArq.println("    - Nº Páginas: " + Arrays.toString(POSFalse.toArray()));
                    //</editor-fold>

                    DataFalse.clear();
                    HoraFalse.clear();
                    POSFalse.clear();


                    arq.close();
                    pdDoc.close();
                    cosDoc.close();


                    f.delete();
                }
    
asked by anonymous 06.07.2016 / 22:58

1 answer

2

The RandomAccessBufferedFileInputStream class to which you pass the file is not being closed anywhere.

Save it to a variable and call the method close() at some point.

Better yet, use a try-with-resources block to ensure that no errors go wrong. break your code.

    
08.07.2016 / 05:56