2009-05-18 3 views
4

Ich schreibe Zeichenfolge in temporäre Datei (temp.txt) und ich möchte, dass die Datei nach dem Klicken auf die Schaltfläche meines Awt Fenster öffnen sollte es löschen, wenn ich diese Datei schließen (nach dem Öffnen dieser Datei), wie kann Ich mache das?offene Temp-Datei in Java

Dies ist der Code, den ich temporäre Datei in Java erstellen wurde mit:

File temp = File.createTempFile("temp",".txt"); 

FileWriter fileoutput = new FileWriter(temp); 
Bufferedwriter buffout = new BufferedWriter(fileoutput); 

Antwort

19

Eine Datei erstellt von:

File temp = File.createTempFile("temp",".txt"); 

nicht gelöscht werden, siehe javadoc, müssen Sie

temp.deleteOnExit(); 

nennen, so wird die JVM die Datei beim Beenden löschen ...

+0

Wie kann ich Datei nach dem Klicken auf Schaltfläche und temp.deleteOnExit öffnen, ist es löschen, wenn ich die Datei schließe oder schließen Sie die Myrunning-Anwendung? –

+0

Ich denke, er möchte nur die Datei löschen, wenn er damit fertig ist, anstatt sie beim Beenden der Anwendung zu löschen. –

+0

Sie möchten also - 1 Daten in eine Datei schreiben und sie schließen. 2. Öffnen Sie diese Datei und zeigen Sie die Daten in einem Fenster an. 3- Löschen Sie diese Datei, sobald jemand die Daten in einem Fenster angesehen hat ... Habe ich es verstanden? – pgras

4

Wie wäre es mit etwas wie:

if (!temp.delete()) 
{ 
    // wasn't deleted for some reason, delete on exit instead 
    temp.deleteOnExit(); 
} 
0

eine Operation auszuführen, wenn eine Schaltfläche klicken, werden Sie Code so etwas wie dieses benötigen:

button.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(ActionEvent event) { 
      fileOperation(); 
     } 
    } 
... 
private void fileOperation() { 
    ... do stuff with file ... 
} 

Sie wahrscheinlich viele Beispiele mit Google finden. Im Allgemeinen sollte der anonyme innere Klassencode kurz sein und nur das Ereignis und den Kontext in Operationen umsetzen, die für die äußere Klasse bedeutsam sind.

Momentan müssen Sie die Datei manuell mit File.delete löschen, nachdem Sie sie geschlossen haben. Wenn Sie wirklich wollten, könnten Sie sagen, RandomAccessFile und überschreiben close löschen nach dem Schließen. Ich glaube, dass delete-on-close als Modus zum Öffnen der Datei auf JDK7 betrachtet wurde (keine Ahnung, ob es in oder nicht ist).

Nur in eine Datei schreiben, wie in Ihrem Code, wäre sinnlos. Wahrscheinlich möchten Sie die Datei löschen, nachdem Sie einen Lesestream und nicht den Schreibstream geschlossen haben. Es ist keine schlechte Idee, temporäre Dateien zu vermeiden, wenn es Ihnen möglich ist.

+0

aber wie kann ich Datei öffnen? Klicken Sie auf die Schaltfläche (Operation ist wie Feind Beispiel Doppelklick auf die Textdatei) Wie kann ich dies per Programm tun? –

+0

Ah, wie kann man durch Klicken auf die Schaltfläche eine Aktion ausführen? –