Ich brauche Datei zu löschen, rechts vor dem Beenden Methode:Wie kann ich Datei von Fileoutputstream erstellt löschen
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();
Ich brauche foutFlattened
Datei zu löschen.
Ich bemerkte auch, dachte ich close()
es, erlaubt es mir nicht, die Datei zu löschen, es sei denn, ich töte den Prozess.
Ich bin mit Java 1.80_92
, die das Schließen der Datei nicht behoben hat. Ich muss diese Datei auch löschen, bevor ich die Methode verlasse. – Angelina
Dies ist Java 6 Fehler imho und der Grund, warum close() -Methode zu URLClassloader in Java 7 hinzugefügt wurde. –
Auch glaube ich, dass PDFStamper den zugrunde liegenden PDFReader nicht schließt, so dass Sie noch griffe auf die Datei öffnen. Sie müssen alle ausschließen, die ein Handle für die Datei haben. Ich sehe, dass jemand den Code irgendwann aktualisiert hat, um den zugrunde liegenden Reader zu schließen, aber dieser Fix kann oder kann nicht in der Version sein, die Sie verwenden (oder bereits veröffentlicht?). Wie auch immer, ich würde dort anfangen und versuchen, jeden zu nennen, der sich auf jeder I/O-Klasse schließt, die Sie verwenden. –