Ciao ragazzi ho necessità di controllare l'accesso a un file utilizzato da due applicazioni differenti....
un'applicazione usa questa funzione per salvare una determinata stringa nel file
codice:public void salvaScontrinoPalm(Scontrino s){ String nomeFile=String.valueOf(codiceMenu+" "+dataOggiPerFile()+" "+Menu.codiceCartaV); File f=new File(nomeFile); FileWriter fw=null; //verifico se il file esiste if(f.exists()){ try { fw=new FileWriter(f,true); BufferedWriter bw=new BufferedWriter(fw); bw.write(tav+" "); bw.write(data); for(Pietanza p:s.ordini){ String cod=String.valueOf(p.getCodice()); String quant=String.valueOf(p.getOrdinata()); bw.write(" "+cod); bw.write(" "+quant); } bw.newLine(); bw.flush(); bw.close(); fw.close(); } catch(IOException e){ e.toString(); } } else{ //file nn esiste try { fw=new FileWriter(f); BufferedWriter bw=new BufferedWriter(fw); bw.write(codiceMenu); bw.newLine(); bw.write(Menu.codiceCartaV); bw.newLine(); bw.write(tav+" "); bw.write(data); for(Pietanza p:s.ordini){ String cod=String.valueOf(p.getCodice()); String quant=String.valueOf(p.getOrdinata()); bw.write(" "+cod); bw.write(" "+quant); } bw.newLine(); bw.flush(); bw.close(); fw.close(); } catch(IOException e){ e.toString(); } } }
l'altra usa una funzione simile per scriverci. In questa applicazione con altre funzioni può leggere e modificare il file cancellando una riga.
Io ho visto che devo usare i filelock ho trovato questo esempio
ho provato a metterlo nella mia funzione con le opportuen modifiche ma quando temto di usare la funzione per la prima volta mi dice file bloccato...codice:public class Locking { public static void main(String arsg[]) throws IOException { RandomAccessFile raf = new RandomAccessFile("junk.dat", "rw"); FileChannel channel = raf.getChannel(); FileLock lock = channel.lock(); try { System.out.println("Got lock!!!"); System.out.println("Press ENTER to continue"); System.in.read(new byte[10]); } finally { lock.release(); } } }
vi prego ho ugenza di fare questo passaggio (e un altro) per finire la tesi...

Rispondi quotando