27. december 2005 - 21:48Der er
11 kommentarer og 1 løsning
Finde hvilken "root"-folder FileSystemWatcher kigger på.
Hej
Jeg har brug for at finde ud af hvilken "root"-folder en FileSystemWatcher kigger på, i min Changed event.
Jeg har prøvet at caste [Object sender] til FileSystemWatcher og tage dens Path property - men, hvis eventen bliver fyret fra en undermappe, så for jeg undermappen med i denne propety.
Ligeledes for jeg selvfølgelig undermappen med, hvis jeg tager Fullpath propetien på [FileSystemEventArgs e]
Jeg havde håbet at jeg måske var en Tag property på watcheren, så jeg kunne sætte "root" på watcheren her - men der er ingen tag på FileSystemWatcher. Så hvad er der så af muligheder?
Jeg savner lidt en mulighed for redigere indlæg/spørgsmål... eventuelt bare en mulighed for at kunne redigere inden for 5 min.
Sidste afsnit i mit spørgsmål var jo simpelthen så fyldt med stave/grammafejl at det halve kunne have været nok :) Kunne selvfølgelig have læst det igennem først - men alligevel, det kunne altså være en rar feature.
Synes godt om
Slettet bruger
28. december 2005 - 06:15#2
Du tager e.FullPath, altså fullpath fra FileSystemEventArgs. Og så finder du den tekst, som svare til root dir, hvor du kunne bruge noget RegEx som den her:
^[^\\]*\\([^\\]+)\\
Alternativt kan du bruge DirectoryInfo klassen til at skaffe den information fra en path.
Jeg kan ikke se hvordan den vil virke. Problemet er jo netop, at jeg ikke kan finde root dir? e.FullPath kan jo være 10 undermapper inde i den mappe som min FileSystemWatcher kigger på.
Synes godt om
Slettet bruger
28. december 2005 - 19:15#4
En fullpath kunne være
c:\noget\et eller anden\lidt mere\og endelig filen.txt
Hvsi jeg forstår dig ret er det noget i ovenstående du ønsker ikke?
Lad os sige at min FileSystemWatcher holder øje med mappen:
"c:\noget\et eller anden\"
Nu bliver filen "c:\noget\et eller anden\lidt mere\og endelig filen.txt" ændret, og min Changed event bliver fyret. Det jeg vil nu, er at få fat i "c:\noget\et eller anden\" fra FileSystemWatcheren.
Synes godt om
Slettet bruger
28. december 2005 - 19:33#6
Ok bare lige for at være sikker. Du vil altså have den Path, som din FileSystemWatcher overvåger?
I givet fald er det letteste vel bare at sørger for at den klasse, som modtager eventen kender den? Men det er der måske en grund til at den ikke kan eksempelvis at den modtager fra flere FileSystemWatcher's?
Det jeg skal bruge, er alle de undermapper, som ligger under den mappe som FSW kigger på.
Altså, hvis FSW kigger på: "C:\tester\"
og filen "C:\tester\mappe1\mappe2\mappe3\fil1.txt" ændres. Så skal jeg have have extracted "\mappe1\mappe2\mappe3\".
Ved ikke om det gav mening!?
Alle forslag modtages, smid endelig noget brainstorming :-)
Synes godt om
Slettet bruger
29. december 2005 - 07:52#10
Måske et lidt dumt spørgsmål men hvad kan du bruge den oplysning til, mener bare hvis du skal noget med file så er fullpath jo toppen, ok men du behøver ikke forklare sikkert bare mig der mangler fantasi ;)
Et bud på en løsning kunne være at du laver en specialisering af FileSystemWatcher og giver den en property, som eksempelvis watchedFolder, så kunne du i teorien caste "object sender" i eventen og læse egenskaben. Det er et skud men det kunne fungerer...
class WatchFolder : System.IO.FileSystemWatcher { public WatchFolder(string p) { base.Path = p; this.RootDir = p; }
private string m_RootDir = string.Empty; public string RootDir { get { return m_RootDir; } set { m_RootDir = value; } } }
Synes godt om
Slettet bruger
03. januar 2006 - 05:38#12
svar ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.