2016-05-04 6 views
0

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

Antwort

1

Es ist ein Problem, das sich von Zeit zu Zeit mit Java 6. Ich habe es nicht in Java 7 gesehen zu kommen scheint, aber wenn Sie es schließen und es scheint immer noch Wenn etwas an der Datei hängt, müssen Sie möglicherweise ein GC aufrufen, damit der JVM die Datei vollständig freigibt, damit Sie sie löschen können. Schreckliches Training, aber das war das Einzige, was mir geholfen hat, wenn ich in der Vergangenheit darauf gestoßen bin.

+0

, die das Schließen der Datei nicht behoben hat. Ich muss diese Datei auch löschen, bevor ich die Methode verlasse. – Angelina

+0

Dies ist Java 6 Fehler imho und der Grund, warum close() -Methode zu URLClassloader in Java 7 hinzugefügt wurde. –

+0

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. –

Verwandte Themen