如何删除FileOutputStream创建的文件

时间:2016-05-04 18:54:26

标签: java fileoutputstream pdfstamper

我需要在退出方法之前删除文件:

String holdInFdfFile = "myPDF1";
this.holdModifiedPDFDir = "C:\\pdfs\\Jobs\\";
String tempString = this.holdModifiedPDFDir + "\\" + holdInFdfFile;

//Create Flattened PDF
PdfReader PDFreaderFlattened = new PdfReader(this.holdOriginalPDFDir + holdInPdfFile);
FileOutputStream foutFlattened = new FileOutputStream(this.holdModifiedPDFDir + holdInFdfFile + "_FLAT.pdf");
PdfStamper stampFlattened = new PdfStamper(PDFreaderFlattened, foutFlattened);
FdfReader holdFDFreaderFlattened = new FdfReader(tempString);
stampFlattened.setFreeTextFlattening(true);
stampFlattened.setFullCompression();
stampFlattened.setFormFlattening(true);
stampFlattened.setFullCompression();
AcroFields formFlattened = stampFlattened.getAcroFields();
formFlattened.setFields(holdFDFreaderFlattened);

stampFlattened.close();
foutFlattened.close();

我需要删除foutFlattened文件。

我也注意到,即使我认为我close()它,它也不允许我删除文件,除非我杀了这个过程。

我正在使用java 1.80_92

1 个答案:

答案 0 :(得分:1)

有一个问题似乎不时出现在Java 6中。我还没有在Java 7中看到它,但是如果你关闭它并且它似乎仍然挂在文件上,你可能会必须调用一个gc才能让jvm完全释放文件,以便你可以删除它。可怕的练习,但这是我在过去遇到这种情况时唯一有效的方法。