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();
}