2009-05-18 8 views
4

J'écris la chaîne au fichier temporaire (temp.txt) et je veux que ce fichier devrait ouvrir après avoir cliqué sur le bouton de ma fenêtre awt il devrait supprimer lorsque je ferme ce fichier (après l'ouverture de ce fichier), comment Je fais ça?ouvrir le fichier temporaire en Java

Voici le code que je l'ai utilisé pour créer un fichier temporaire en Java:

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

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

Répondre

19

Un fichier créé par:

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

ne seront pas supprimés, voir javadoc, vous devez appeler

temp.deleteOnExit(); 

de sorte que la machine virtuelle Java supprime le fichier à la sortie ...

+0

comment puis-je ouvrir le fichier après avoir cliqué sur le bouton et temp.deleteOnExit est-il supprimer lorsque je ferme le fichier ou ferme l'application myrunning? –

+0

Je pense qu'il veut juste supprimer le fichier quand il a fini avec lui, plutôt que de le supprimer à la sortie de l'application. –

+0

Donc, vous voulez écrire des données dans un fichier et le fermer. 2- dernier sur ouvrir ce fichier et afficher les données dans une fenêtre. 3- supprimer ce fichier une fois que quelqu'un a regardé les données dans une fenêtre ... Ai-je compris? – pgras

4

Que diriez-vous de quelque chose comme:

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

Pour effectuer une opération en cliquant sur un bouton, vous aurez besoin d'un code comme ceci:

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

Vous pouvez probablement trouver de nombreux exemples avec google. En général, le code de classe interne anonyme doit être court et traduire l'événement et le contexte en opérations significatives pour la classe externe.

Actuellement, vous devez supprimer le fichier manuellement avec File.delete après l'avoir fermé. Si vous voulez vraiment vous pourriez étendre, par exemple, RandomAccessFile et remplacer close pour supprimer après la fermeture. Je crois que delete-on-close a été considéré comme un mode d'ouverture de fichier sur JDK7 (aucune idée s'il est dedans ou non). Ecrire simplement dans un fichier, comme dans votre code, serait inutile. Vous voudrez vraisemblablement supprimer le fichier après la fermeture d'un flux de lecture et non le flux d'écriture. Ce n'est pas une mauvaise idée d'éviter les fichiers temporaires si vous le pouvez.

+0

mais comment puis-je ouvrir le fichier? en cliquant sur le bouton (l'opération est comme l'exemple de l'ennemi en double-cliquant sur le fichier texte) comment puis-je faire cela par programme? –

+0

Ah, comment faire cliquer sur le bouton pour effectuer une action? –