View Full Version : [JAVA] [file] vedere se un file è stato modificato rispetto all'ultimo salvataggio
quAntiVirus
10-11-2011, 22:00
Salve gente, sto scrivendo un'applicazione che tramite GUI permette di effettuare delle operazioni e poi salva il risultato in un file.
Ho già implementato nella JMenuBar, i vari "items" Apri File, Nuovo File, Salva, Salva con Nome...ecc.
Funziona tutto, devo sistemare solo qualche particolare...ad esempio, come da oggetto, come faccio a sapere se il file su cui sto lavorando ha subito modifiche rispetto all'ultimo salvataggio? So che esiste un metodo che restituisce la data dell'ultima modifica ma non credo faccia al caso mio, a me servirebbe solo saper se ha subito modifiche rispetto all'ultimo salvataggio..questo lo vorrei sapere più che altro perchè voglio implementare la richiesta di salvataggio quando si chiude il programma dalla X rossa del sistema operativo? Cioè se è stato modificato chiamo la richiesta di salvataggio ed esco, altrimenti esco direttamente senza fare niente.
A tal proposito avrei anche un altro quesito, che "evento" devo usare per captare la chiusura della finestra tramite X ?
Grazie a tutti coloro che mi aiuteranno!
Saluti
Riguardo il primo problema non credo ci sia un metodo come quello di cui hai bisogno. Dovrai fartelo da te. Ti salvi la data dell'ultima modifica e poi usi il metodo lastModified() di File per fare il controllo.
Riguardo il secondo problema. La guida Swing Espresso di PGI-Bis ci insegna che puoi farlo con qualcosa del genere
window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
window.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int answer = JOptionPane.showConfirmDialog(e.getWindow(), "sicuro?",
"Conferma chiusura", JOptionPane.YES_NO_OPTION);
if(answer == JOptionPane.YES_OPTION)
e.getWindow().dispose();
}
});
Ti consiglio dare un'occhiata alla guida se il codice non ti è chiaro ;)
http://www.tukano.it/swing%20espresso.pdf
quAntiVirus
10-11-2011, 22:55
Riguardo il primo problema non credo ci sia un metodo come quello di cui hai bisogno. Dovrai fartelo da te. Ti salvi la data dell'ultima modifica e poi usi il metodo lastModified() di File per fare il controllo.
Vabbè ma scusa così confronto 2 dati uguali no? Cioè la data dell'ultima modifica me la restituisce lo stesso lastModified() no?
Penso di aver capito che non posso fare altro che mettere delle flags che mi notifichino l'avvenuto cambiamento dei dati sensibili rispetto allo stato in cui erano all'apertura del file. Così posso sempre sapere se è avvenuta una modifica..altre strade?
Riguardo il secondo problema. La guida Swing Espresso di PGI-Bis ci insegna che puoi farlo con qualcosa del genere
window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
window.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int answer = JOptionPane.showConfirmDialog(e.getWindow(), "sicuro?",
"Conferma chiusura", JOptionPane.YES_NO_OPTION);
if(answer == JOptionPane.YES_OPTION)
e.getWindow().dispose();
}
});
Ti consiglio dare un'occhiata alla guida se il codice non ti è chiaro ;)
http://www.tukano.it/swing%20espresso.pdf
Ok su questo ci siamo, grazie 1000! ;)
starfred
11-11-2011, 08:04
Personalmente userei il calcolo dell'hash prima e dopo e poi farei il confronto.
Ma forse non ho capito bene il problema.
banryu79
11-11-2011, 09:13
Ma forse non ho capito bene il problema.
Infatti; non riesco a capire se il contenuto del file di cui parla l'autore del thread viene editato direttamente dalla sua applicazione (che quindi dovrà implementare un controllo in fase di chiusura di se stessa per veirficare se ci sono modifiche pendenti in memoria che vanno scritte sul file) oppure se la sua applicazione monitora la data di ultima modifica di un file tra un'esecuzione e l'altra e deve accorgersi se tra l'esecuzione corrente e la precedente qualcuno ha modificato il file (e quindi dovrà salvare le info sul file in qualche modo, ad esempio hash in database).
Oppure entrambe le esigenze.
Insomma: raccontaci che fa la tua applicazione :fagiano:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.