
A program futtatása előtt a LogPath-ban lévő elérési útvonalat változtassa meg egy olyanra, mely létezik az Ön gépén és ahová a program által készített naplóállományokat helyezni szeretné.
private string LogPath = "d:\\FileWatcher\\";
A megvalósítás viszonylag egyszerű: szükségünk lesz egy FileSystemWatcher komponensre a ToolBox Components lapjáról. Ennek segítségével értesítést kaphatunk arról, hogy egy adott elérési úton belül milyen állományok jönnek létre. Ezt a komponens Path property-jében adhatjuk meg, ahová most a C:\ értéket írjuk. Ezt követően állítsuk az IncludeSubdirectories property-t igazra. Ennek következménye az lesz, hogy nem csak a Path-ban megadott elérési útvonalon belüli állományok lesznek figyelemmel kísérve, hanem az ebből nyíló almappákon belüliek is. Vagyis a mi esetünkben a teljes C meghajtó.
További előkészítő lépésként a NotifyFilter-nél válasszuk ki a FileName értéket, ezzel az állomány nevek változásait tudjuk figyeltetni.
Végül hozzunk létre a komponens Created nevű eseményéhez egy eseménykezelőt. A Created akkor jön létre, ha a megadott elérési úton egy új állomány létrejön.
Ebben az esetben a paraméterként kapott „e” változó FullPath property-jéből elérhetjük a létrejött állomány nevet teljes elérési útvonallal együtt.
private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)
{
String fp = e.FullPath;
Mielőtt tárolnánk a naplóállományunkba ezt, lehetőségünk van különféle állományok, vagy almappák kiszűrésére. Így például, ha nem szeretnénk naplózni azt, hogy a Recycle, vagyis a Lomtár mappába létrejön állomány, akkor ezt egy egyszerű vizsgálattal kiszűrhetjük.
if ((fp.IndexOf("recycle")==-1) && (fp.IndexOf("recent")==-1))
{
A naplózás elvégzéséhez egy TXT állományt hozunk létre a LogPath-ban megadott elérési útvonalon az aznapi dátum felhasználásával. Ehhez a StreamWriter osztályt használjuk.
StreamWriter sw = new StreamWriter(LogPath + DateTime.Now.ToString("yyyyMMdd") + ".txt", true);
A StreamWriter WriteLine függvényt használva az állomány végéhez hozzáírhatunk egy új sort, melyben az aktuális időpont, valamint a létrejött állomány neve szerepel.
sw.WriteLine(DateTime.Now.ToString("T") + " - " + fp);
Végül zárjuk a naplóállományt.