Avatar billede sunesune Nybegynder
09. september 2005 - 09:13 Der er 10 kommentarer og
1 løsning

finde alle filer i en mappe

Hej eksperter

Jeg er ret ny til Visual C#.net og skal bruge en rutine som gennemløber alle filer under en mappe (også filer i undermapper!)
Jeg har fået den til at liste alle filerne i en mappe vha. http://eksperten.dk/spm/341686 Men jeg skal også bruge filerne fra underbiblioteket... er der en der kan hjælpe mig?
Avatar billede arne_v Ekspert
09. september 2005 - 09:21 #1
til inspiration:

    private void XCopy(string dir1, string dir2)
    {
        string[] files = Directory.GetFiles(dir1);
        foreach (string f in files) {
            File.Copy(f, dir2 + f.Substring(dir1.Length), true);
        }
        string[] dirs = Directory.GetDirectories(dir1);
        foreach (string d in dirs) {
            XCopy(d, dir2 + d.Substring(dir1.Length));
        }
    }
Avatar billede sunesune Nybegynder
09. september 2005 - 09:24 #2
Den skal ikke kopiere filerne, jeg har vist heller ikke forklaret det godt nok:

det handler om at jeg skal lave et lille program der kan søge i alle filer i en mappe (undermapper også osv derud af) og se om der står en brugerdefineret streng i en/flere af filerne).
Avatar billede arne_v Ekspert
09. september 2005 - 10:29 #3
jeg ved godt at du ikke vil kopiere

du skal ikke kopiere , men metoden til at traversere er den samme
Avatar billede arne_v Ekspert
09. september 2005 - 10:30 #4
private void Find(string dir)
    {
        string[] files = Directory.GetFiles(dir);
        foreach (string f in files) {
            // process f
        }
        string[] dirs = Directory.GetDirectories(dir);
        foreach (string d in dirs) {
            Find(d);
        }
    }

[tilrette uden test]
Avatar billede sunesune Nybegynder
09. september 2005 - 10:47 #5
ok, det giver mig lidt mere indsigt i det, men da det er dag 2 jeg arbejder med det, kunne jeg godt tænke mig at vide hvordan jeg læser filnavnet (der hvor du har skrevet //process f) hvad skal der stå der?

har prøvet med: MessageBox.Show(new files(f).Name);

men det giver fejl ...:(
Avatar billede sunesune Nybegynder
09. september 2005 - 10:52 #6
Får også denne fejl når jeg kører det (kopieret ind herfra)

An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll

Additional information: Syntaksen i filnavnet, mappen eller diskenhedsnavnet er forkert.
Avatar billede arne_v Ekspert
09. september 2005 - 18:00 #7
følgende virker fint hos mig:

using System;
using System.IO;

public class MainClass
{
    private static void Find(string dir)
    {
        string[] files = Directory.GetFiles(dir);
        foreach (string f in files) {
            Console.WriteLine(f);
        }
        string[] dirs = Directory.GetDirectories(dir);
        foreach (string d in dirs) {
            Find(d);
        }
    }
    public static void Main(string[] args)
    {
        Find(@"C:\WINDOWS");
    }
}
Avatar billede sunesune Nybegynder
12. september 2005 - 14:33 #8
Det er vidst mig der er fattesvag, skal lige vænne mig til ikke at skrive "C:\windows", men enten "C:\\windows" eller @"c:\windows"... det virker ihvertfald og 1000 tak for hjælpen.. så bare svar så du kan få dine point..:) forresten en sidste lille ting, hvis jeg nu vil have at man skal kunne bruge wildcards når man søger efter en fil, er der så en let forståelig måde at gøre det på?
Avatar billede arne_v Ekspert
12. september 2005 - 14:49 #9
svar
Avatar billede arne_v Ekspert
12. september 2005 - 14:50 #10
string[] files = Directory.GetFiles(dir, "*.TXT");
Avatar billede sunesune Nybegynder
12. september 2005 - 19:42 #11
Tusind tak!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester