Toon posts:

[Java] runtime commando in loop?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dudes

Ik ben bezig met een klein java tooltje dat (web/image) bestanden waar ik mee bezig ben (dus vaak save/refresh) automatisch refresht nadat ik heb opgeslagen.

principe:
Java:
1
2
3
4
5
6
7
8
while(true){
            if( file.lastModified() > opgeslagen_last_modified ){
                 
                     Runtime.getRuntime().exec( path+filename );
                     opgeslagen_last_modified = file.lastModified();

           }
}

Dit werkt, alleen wordt het bestand pas gerefresht ( dus het Runtime.getRun... commando ) nadat ik mijn programma heb beeindigd.

Weet iemand hoe dit op te lossen is, zodanig dat de loop gewoon door kan blijven lopen (wachtend op nieuwe veranderingen dus)

BVD

Gerben

[ Voor 4% gewijzigd door Verwijderd op 11-03-2003 22:32 ]


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Twee suggesties:
a) exec() retourneerd een Process-object. Roep na de exec de methode waitFor() aan op dat Process, dan wacht ie met verder gaan totdat het process klaar is.
b) vang eventuele excepties van exec() af
Hope it helps...

[ Voor 42% gewijzigd door SWfreak op 11-03-2003 22:52 . Reden: Stupidity ]


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ook is het wel verstandig om dit niet in een while(true) loop te doen, maar om even te wachten tussen elke check. Dit is wel heel intensief pollen. Je kan hiervoor heel makkelijk een javax.swing.Timer of java.util.Timer gebruiken.

Misschien dat er trouwens binnen JSR 203 gewerkt wordt aan het echt monitoren van files, maar of dat inderdaad een doelstelling is, is mij niet helemaal duidelijk.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
process.waitFor() doet niets, het runtime command wordt pas uitgevoerd na het terminaten van de applicatie. Ook worden er geen exceptions gegenereerd. :"(