Visualizzazione dei risultati da 1 a 3 su 3

Discussione: filelock

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140

    filelock

    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...

  2. #2
    Ciao, quando usi risorse come readers writers locks ecc le tue chiamate ai .close() e lock.release() devono stare dentro un blocco finally, altrimenti se hai un eccezione non chiudi/rilasci niente.
    Non sò se è questo che ti crea problemi ma intanto correggi.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140
    ragazzi non ci riesco.. non so come modificare la funzione per far bloccare il file...
    qualcuno mi riesce ad aiutare?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.