Sto provando a utilizzare FSEvents per rilevare quando i file sono stati aggiunti/rimossi da una cartella specifica. Per il momento, ho implementato un semplice wrapper su FSEvents, e funziona perfettamente: ottengo tutti gli eventi.rinominare/eliminare il file di tracciamento con FSEvents su Lion
ma il problema che ho ora è che quando rinomina un file nel Finder, prendo 2 eventi distinti: il primo di tipo "rinominato" con il vecchio nome del file, e un altro con "rinominato" e la nuovo nome file. Gli ID evento sono diversi tra le due chiamate.
Quindi, come faccio a sapere quale evento "rinominato" contiene il vecchio nome e quale evento contiene quello precedente ?? Ho provato a cercare nella documentazione, ma sfortunatamente, kFSEventStreamEventFlagItemRenamed non è documentato ... sembra nuovo in Lion.
PS: l'unico modo in cui potevo pensare era: in un evento ribattezzato, controllo la mia interfaccia utente per vedere se ho un articolo corrispondente al percorso dell'evento. In tal caso, lo contrassegno per la ridenominazione. In caso contrario, controllo se un elemento è stato contrassegnato per la ridenominazione e, in tal caso, lo rinominerò nel nuovo percorso dell'evento. Ma davvero non mi piace questa idea ...
Modifica: Ok, ho imitato qualcosa lungo la linea del mio "PS": ho notato che quando si rinomina qualcosa, gli id dei 2 eventi sono consecutivi, in modo che con l'id dell'evento che contiene il nuovo nome, posso ottenere l'evento contenente il vecchio nome. Io uso semplicemente un po 'di dizione nella mia interfaccia per memorizzare id e percorsi associati nel caso di un evento "rinominato".
Ad ogni modo, ora posso prendere rinominare eventi, e anche spostare gli eventi: quando si sposta un file, si tratta di un evento "rinominato", che viene catturato dal FSEventStream ...
Ma, ho ancora un ultimo problema: eliminazione. Quando elimino qualcosa, viene spostato nel cestino: ricevo un evento "rinominato". Ma il problema è che non ricevo il secondo evento di rinomina. Solo un evento "modificato" nel file .DS_Store. Penso che questo file sia usato dal Finder per sapere quali file sono nel cestino, ecc. Quindi posso controllare la modifica di questo file e ottenere l'ultimo evento "rinominato" per rilevare che un file è stato inviato al cestino. Ma sto usando TotalFinder che usa Asepsis, che modifica il modo in cui il Finder memorizza i file .DS_Store: non ricevo più "modificato" su questo. Per sumarize: Non riesco a rilevare quando un file viene inviato al contenitore ...
Qualche idea su come posso farlo? Forse usare qualcos'altro di FSEvents per catturare solo questo evento?
molto utile, grazie per il tuo codice :) –
sul tuo sito non c'è un pulsante di invio nella pagina dei contatti, dammi la tua email per favore, voglio farti qualche domanda. Grazie :) –
Ho corretto il modulo di contatto sul mio sito. Non so come inviare messaggi privati su StackOverflow (o anche se è possibile ^^) – Citron