2016-04-25 12 views
0

Ich habe einen Java-Code, der Ausgabedatei generiert. Wenn ich diese Ausgabedatei zur Laufzeit in diesem Java-Code löschen möchte, kann sie nicht gelöscht werden. Zum Beispiel:Wie kill javaw.exe in Java zur Laufzeit

File file2= new File("D:\\eclipse-jee-mars-R-win32-x86_64\\eclipse\\output.txt"); 
    if(file2.delete()){ 
       System.out.println(file2.getName() + " is deleted!"); 
      } 
      else{ 
       System.out.println("Delete operation is failed."); 
      } 

Dieser Code funktioniert nicht. ("output.txt" Datei wird in diesem Verzeichnis erzeugt und kann im Ordner gesehen werden.)

In der Tat Wenn ich auf dem Windows-Ordner löschen möchte, kann es nicht löschen und es gibt diesen Fehler. Ich werde ins Englische übersetzen.

Screenshot

Wenn ich „javaw.exe“ Prozess im Task-Manager zu töten, kann ich diese Datei auf dem Ordner löschen. Meine Frage ist, wie kann ich dieses Problem lösen? Ich möchte "javaw.exe" zur Laufzeit in Java beenden, damit diese Datei gelöscht werden kann. Wie kann man diesen "javaw.exe" -Prozess zur Laufzeit in Java beenden? Wenn ich den "javaw.exe" -Prozess zur Laufzeit im Code abbringe, stoße ich auf ein anderes Problem?

Wie erstelle ich diese Ausgabedatei?

In der Tat entwickle ich Web-Anwendung, die Java-Codes online kompilieren/ausführen, indem Sie JSP verwenden. Ich habe nicht alle Teile geteilt, weil es schwer zu verstehen ist, wenn ich alle Teile meines Codes teile. Dieser Code erzeugt eine Ausgabedatei, nimmt eine Eingabedatei, sortiert dann eine neue "output.txt" -Datei. Ich möchte in meiner JSP diese Datei löschen, aber sie konnte nicht gelöscht werden, da javaw.exe noch läuft.

Die Ausgabedatei wird sowieso im Verzeichnis "D: \ eclipse-jee-mars-R-win32-x86_64 \ eclipse" generiert, ich möchte keine Details erklären, um Verwirrung zu vermeiden.

+1

Wie generiert der Code diese Ausgabedatei? – Berger

+0

Vielleicht müssen Sie ein System.exit (int i) am Ende Ihres Programms verwenden ?! – mrbela

+0

Gute Frage, durch Verwendung von FileWriter fw = neuer FileWriter ("output.txt"); \t \t \t for (i = 0; i

Antwort

0

Ich löste mein Problem. Ich habe vergessen, meinen BufferedReader zu schließen. Es gibt einige Übergangsmethoden in meinem Programm, die ich nicht alle teilen konnte. Bei diesen Übergangsmethoden handelt es sich um die Dateiverarbeitung. An einem bestimmten Punkt vergesse ich, den BufferedReader zu schließen, weil ich einen anderen Speicherort erstellt habe. Nachdem ich meinen BufferedReader geschlossen hatte, konnte ich "output.txt" an anderer Stelle dynamisch löschen. Ich teile meine Viewtext-Methode. Es wird verwendet, um die Ausgabedatei in jsp textarea anzuzeigen.

public static String viewtext(String pathname) throws IOException{ 


     String a=""; 

     File f = new File(pathname); 
     if(f.exists() && !f.isDirectory()) { 
      BufferedReader br = new BufferedReader(new FileReader(pathname)); 
       for (String line; (line = br.readLine()) != null;) { 
        a = a + line + "\n" ; 
        } 
       br.close(); //I added just this 
      return a; 
     } 
     else{ 
      // br.close(); //No need here, if there is no file no close is needed. 
      return "Your file is not found!"; 
    } 

} 

Auch gibt es keine Notwendigkeit, javaw.exe Prozess zu töten.

Verwandte Themen