2012-06-17 21 views
21

Finora so che FileSystemWatcher può guardare in una cartella e se uno qualsiasi dei file all'interno di quella cartella viene modificato, modifica, ecc. ... quindi possiamo gestire esso. Ma non sono sicuro di quale filtro e evento dovrei usare nel mio scenario: Guarda per una cartella, se un file viene aggiunto a quella cartella, fai XYZ ... Quindi nel mio scenario non mi interessa se un file esistente è cambiato, ecc .. questo deve essere ignorato ... solo XYZ se e solo se un nuovo file è stato aggiunto a quella cartella ...Quale filtro di FileSystemWatcher devo usare per trovare nuovi file

Quale evento e filtro consigliate per questo scenario?

+3

quale voto negativo per?!?! – Bohn

risposta

12

Impostare la watcher:

FileSystemWatcher watcher = new FileSystemWatcher(); 
watcher.Path = "Blah"; 

watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
    | NotifyFilters.FileName; 

watcher.Created += new FileSystemEventHandler(OnChanged); 

watcher.EnableRaisingEvents = true; 

quindi implementare la FileCreated delegato:

private void OnChanged(object source, FileSystemEventArgs e) { 
    Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType); 
} 
+5

Perché dovremmo impostare 'NotifyFilter' se ci interessa solo che un file venga creato, non modificato? –

+5

@JeffBridgman Non è intuitivo, ma NotifyFilter serve come un modo per mettere a punto le notifiche provenienti da FileSystemWatcher. Per impostazione predefinita, NotifyFilter è impostato su DirectoryName | NomeFile | LastWrite. Questi ti danno la possibilità di raccogliere le attività del file principale che ti aspetti da FileSystemWatcher: Creato, Modificato, Eliminato e Rinominato. Il filtro di notifica può essere modificato per aumentare lo spettro degli attributi di file/directory che verranno monitorati e utilizzati come input per attivare i vari eventi. Anche se, come puoi immaginare, la maggior parte degli altri filtri genererà solo un evento modificato. – CobaltBlue

+11

Le risposte StackOverflow sono in definitiva migliori della maggior parte degli altri siti che possono essere trovati su Google in quanto le risposte SO vengono votate e aggiornate nel tempo. –

3

Si prega di guardare qui per una spiegazione dettagliata della FileSystemWatcher: http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx

Si dovrà cercare i file creati, se si desidera cercare i file aggiunti.

Specificare il tipo di modifica da osservare impostando il valore di un'enumerazione WatcherChangeType. I valori possibili sono i seguenti:

  • Tutti: la creazione, la cancellazione, la modifica o la ridenominazione di un file o di una cartella.
  • Modificato: modifica di un file o di una cartella. I tipi di modifiche includono: modifiche alle dimensioni, attributi, impostazioni di sicurezza, ultima scrittura e ultimo orario di accesso.
  • Creato: la creazione di un file o una cartella.
  • Eliminato: la cancellazione di un file o una cartella.
  • Rinominato: la ridenominazione di un file o di una cartella.

Inoltre si può solo cablare il gestore di eventi che spara, se viene creato un file (aggiunto) e non implementare tutti gli altri eventi dal momento che non sono interessanti per voi:

watcher.Created += new FileSystemEventHandler(OnChanged); 
Problemi correlati