ti ringrazio ma sta soluzione gia l'avevo provata però non mi risolve il problema , avrei bisogno tipo di qualcosa di bloccante che se il file è in uso da un altro processo attendo che si liberi senza sollevare eccezione
ti ringrazio ma sta soluzione gia l'avevo provata però non mi risolve il problema , avrei bisogno tipo di qualcosa di bloccante che se il file è in uso da un altro processo attendo che si liberi senza sollevare eccezione
Beh... è piuttosto semplice:
codice:// Provo ad acquisire il lock sul file e attendo finchè non ci riesco FileLock lock = null; while(lock == null) { lock = channel.tryLock(); if (lock == null) { // Attendo 2 secondi try { Thread.sleep( 2000 ); } catch (InterruptedException ie) { ie.printStackTrace(); } } } // Qui ci arrivo solo quando avrò effettivamente il lock ... // fai quel che vuoi col file, che tanto è tuo.
Non è una soluzione "ottimale" perchè in questo caso potresti rimanere "appeso" all'infinito (se non riesce ad ottenere il lock perchè impossibile)... conviene prevedere un meccanismo che consenta l'uscita se passa "troppo tempo" (il troppo tempo lo decidi tu).
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza