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