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
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();
}
}
}
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...
vi prego ho ugenza di fare questo passaggio (e un altro) per finire la tesi...