Java Can';t删除使用itext pdf库创建的pdf文件

Java Can';t删除使用itext pdf库创建的pdf文件,java,pdf,itext,Java,Pdf,Itext,我正在使用IText pdf库(itextpdf.com/)为我用java编写的项目创建pdf文件 问题是:我在我的方法的结果中创建了2个pdf文件,我想删除第一个,但由于某种原因,我的第一个pdf文件似乎无法删除。我尝试过使用File.delete(),将File.delete()放在“finally{}”块中。。。似乎什么都不管用 我确信我关闭了我的FileOutputStream并执行document.close()操作!如何删除此文件 public boolean gerarPDFDeS

我正在使用IText pdf库(itextpdf.com/)为我用java编写的项目创建pdf文件

问题是:我在我的方法的结果中创建了2个pdf文件,我想删除第一个,但由于某种原因,我的第一个pdf文件似乎无法删除。我尝试过使用File.delete(),将File.delete()放在“finally{}”块中。。。似乎什么都不管用

我确信我关闭了我的FileOutputStream并执行document.close()操作!如何删除此文件

public boolean gerarPDFDeStringVariosArquivosSemNumeroDePaginasComId(LinkedList < String > textosLidos, LinkedList < String > nomesDosArquivosLidos, File arquivoPdfOutput) {
    try {
        nomesDosArquivosLidosESeusIds = new HashMap < String, String > ();
        FileOutputStream fos = new FileOutputStream(arquivoPdfOutput);
        Document document = new Document();
        PdfWriter.getInstance(document, fos);
        document.open();
        addMetaData(document);
        addTitlePage(document);
        for (int i = 0; i < textosLidos.size(); i++) {
            String umTextoLido = textosLidos.get(i);
            String umNomeArquivoLido = nomesDosArquivosLidos.get(i);
            String idUmNomeArquivoLido = "#%&#" + "id_" + i + "#%&#";
            this.nomesDosArquivosLidosESeusIds.put(umNomeArquivoLido, idUmNomeArquivoLido);
            String umNomeArquivoLidoEIdDele = idUmNomeArquivoLido + " \n" + umNomeArquivoLido; //o id servirah para sabermos quantas paginas o arquivo possui no pdf
            String textoLido2 = umTextoLido.replaceAll("\\t", "        ");

            addContent(document, textoLido2, umNomeArquivoLidoEIdDele);
        }
        document.close();
        fos.close();


        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

public boolean gerarPDFDeStringVariosArquivosComNumeroDePaginas(LinkedList < String > textosLidos, LinkedList < String > nomesDosArquivosLidos, File arquivoPdfOutput, File arquivoPdfOutputComNumeroDePaginas) {
    /*primeiro vou executar gerarPDFDeStringVariosArquivosSemNumeroDePaginas para gerar um pdf com os 
     * ids de cada arquivo, seus textos, mas sem o numero de paginas e vou alterar a variavel local this.nomesDosArquivosLidosESeusIds
     */
    boolean conseguiGerarPrimeiroPdf = gerarPDFDeStringVariosArquivosSemNumeroDePaginasComId(textosLidos, nomesDosArquivosLidos, arquivoPdfOutput);

    if (conseguiGerarPrimeiroPdf == true) {
        //agora vou pegar quantas paginas os arquivos tem
        VerificaNumeroDePaginasDeCadaArquivoNoPdfGerado verificaNumeroDePaginas = new VerificaNumeroDePaginasDeCadaArquivoNoPdfGerado();
        HashMap < String, Integer > arquivosEQuantasPaginasElesTem = verificaNumeroDePaginas.pegarNumeroDePaginasNoPdfDeCadaArquivo(this.nomesDosArquivosLidosESeusIds, nomesDosArquivosLidos, Main.FILE);

        //agora comeco a criar o segundo pdf que terah o numero de paginas de cada arquivo
        try {
            FileOutputStream fos = new FileOutputStream(arquivoPdfOutputComNumeroDePaginas);
            Document document = new Document();
            PdfWriter.getInstance(document, fos);
            document.open();
            addMetaData(document);
            addTitlePage(document);
            for (int i = 0; i < textosLidos.size(); i++) {
                String umTextoLido = textosLidos.get(i);
                String umNomeArquivoLido = nomesDosArquivosLidos.get(i);

                int quantasPaginasTemOArquivoLido = arquivosEQuantasPaginasElesTem.get(umNomeArquivoLido);
                String umNomeArquivoLidoEPaginas;

                if (quantasPaginasTemOArquivoLido > 1) {
                    umNomeArquivoLidoEPaginas = umNomeArquivoLido + " (" + quantasPaginasTemOArquivoLido + " páginas)";
                } else {
                    umNomeArquivoLidoEPaginas = umNomeArquivoLido + " (" + quantasPaginasTemOArquivoLido + " página)";
                }
                String textoLido2 = umTextoLido.replaceAll("\\t", "        ");

                addContent(document, textoLido2, umNomeArquivoLidoEPaginas);
            }
            document.close();
            fos.close();
            arquivoPdfOutput.delete();

            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    } else {
        return false;
    }

}
public boolean gerarpdfdestringvariosarquivossemnumodepaginascomid(LinkedListtextosLidos,LinkedListnomesDosArquivosLidos,文件arquivoPdfOutput){
试一试{
nomesdosarquivoslidoseusids=newhashmap();
FileOutputStream fos=新的FileOutputStream(arquivoPdfOutput);
文档=新文档();
PdfWriter.getInstance(文档,fos);
document.open();
添加元数据(文件);
添加标题页(文件);
对于(int i=0;itextosLidos,LinkedListnomesDosArquivosLidos,文件arquivoPdfOutputComNumeroDePaginas){
/*您的首席执行官是谁
*本文件中的文件、文本、页码和其他本地变量均包含在本文件中
*/
布尔conseguierarprimeiropdf=gerarpdfddestringvariosarquivossemnumodepaginascomid(textosLidos、nomesDosArquivosLidos、arquivoPdfOutput);
if(conseguiGerarPrimeiroPdf==true){
//你有时间吗
VerificanUMerodPaginasDecadaArquivonUpdfgerado VerificanUMerodPaginasDecadaArquivonUpdfgerado=新的VerificanUMerodPaginasDecadaArquivonUpdfgerado();
HashMaparquivosEQuantasPaginasElesTem=verificaNumeroDePaginas.pegarnumerodepaginasnopdecadaarquivo(this.nomesdosarquivoslidoseusids,nomesDosArquivosLidos,Main.FILE);
//agora comeco a criar o segundo pdf,您可以从卡达·阿奎沃(cada arquivo)的paginas数字中找到答案
试一试{
FileOutputStream fos=新的FileOutputStream(arquivoPdfOutputComNumeroDePaginas);
文档=新文档();
PdfWriter.getInstance(文档,fos);
document.open();
添加元数据(文件);
添加标题页(文件);
对于(int i=0;i1){
umNomeArquivoLidoEPaginas=umNomeArquivoLido+”(“+quantasPaginasTemOArquivoLido+”páginas)”;
}否则{
umNomeArquivoLidoEPaginas=umNomeArquivoLido+”(“+quantasPaginasTemOArquivoLido+”página)”;
}
字符串textoLido2=umTextoLido.replaceAll(“\\t”和“);
添加内容(文件、文本、UMNOMEARKIVOLIDOEPAGINAS);
}
document.close();
fos.close();
arquivoPdfOutput.delete();
返回true;
}捕获(例外e){
e、 printStackTrace();
返回false;
}
}否则{
返回false;
}
}
我这样做是为了测试:

File arquivoPdfGerar = new File(Main.FILE);
File arquivopdfGerarComNumeroDePaginas = new File(Main.FILE2);
/*PrintStream ps = new PrintStream(fileOutputStream);
              System.setOut(ps);*/
LinkedList < String > nomesArquivosLidos = new LinkedList < String > ();
LinkedList < String > textosArquivosLidos = new LinkedList < String > ();
String url = "C:/Users/fábioandrews/Documents/git/PdfGeneratorForSoftwareRegistration/PdfGeneratorForSoftwareRegistration/src/br/ufrn/pairg/pdfgenerator/FirstPDF.java";
String nomeProjeto = "PdfGeneratorForSoftwareRegistration";
String arquivoLido = LeitorArquivoTexto.lerArquivoQualquerDeTexto(url);
String nomeArquivoLido = LeitorArquivoTexto.pegarNomeArquivo(url, nomeProjeto);
nomesArquivosLidos.add(nomeArquivoLido);
textosArquivosLidos.add(arquivoLido);
url = "C:/Users/fábioandrews/Documents/git/PdfGeneratorForSoftwareRegistration/PdfGeneratorForSoftwareRegistration/src/br/ufrn/pairg/pdfgenerator/Main.java";
nomeProjeto = "PdfGeneratorForSoftwareRegistration";
arquivoLido = LeitorArquivoTexto.lerArquivoQualquerDeTexto(url);
nomeArquivoLido = LeitorArquivoTexto.pegarNomeArquivo(url, nomeProjeto);
nomesArquivosLidos.add(nomeArquivoLido);
textosArquivosLidos.add(arquivoLido);

GeraPDFDeStringVariosArquivos geradorPdf = new GeraPDFDeStringVariosArquivos();
geradorPdf.gerarPDFDeStringVariosArquivosComNumeroDePaginas(textosArquivosLidos, nomesArquivosLidos, arquivoPdfGerar, arquivopdfGerarComNumeroDePaginas);
File arquivoPdfGerar=新文件(Main.File);
文件arquivopdfGerarComNumeroDePaginas=新文件(Main.FILE2);
/*PrintStream ps=新的PrintStream(fileOutputStream);
系统放样(ps)*/
LinkedListnomesArquivosLidos=新LinkedList();
LinkedListtextosArquivosLidos=newlinkedList();
String url=“C:/Users/fábioandrews/Documents/git/pdfgeneratorforsoftwarereregistration/pdfgeneratorforsoftwarereregistration/src/br/ufrn/pairg/pdfgenerator/FirstPDF.java”;
字符串nomeProjeto=“PDFGGeneratorForSoftwareRegistration”;
字符串arquivalido=leitoraquivotexto.lerarquivoqualquerydetexto(url);
字符串nomeArquivoLido=leitoraquivotexto.pegarNomeArquivo(url,nomeProjeto);
添加(nomerquivolido);
textosArquivosLidos.add(arquivoLido);
url=“C:/Users/fábioandrews/Documents/git/pdfgeneratorforsoftwarereregistration/pdfgeneratorforsoftwarereregistration/src/br/ufrn/pairg/pdfgenerator/Main.java”;
nomeProjeto=“PDFGGeneratorForSoftwareRegistration”;
arquivalido=leitoraquivotexto.lerArquivoQualquerDeTexto(url);
nomeArquivoLido=leitoraquivotexto.pegarNomeArquivo(url,nomeProjeto);
添加(nomerquivolido);
textosArquivosLidos.add(arquivoLido);
GeraPDFDeStringVariosArquivos geradorPdf=新的GeraPDFDeStringVariosArquivos();
geradorPdf.GerarPDFDDestringVariosarquivoscomNumerodePaginas(textosArquivosLidos,nomesArquivosLidos,arquivopfgerar,arquivopfgerarcomNumerodePaginas);

下一行呢<
 PdfWriter.getInstance(document, fos);