.net - C # Iterate Through Files Hjælp

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har for øjeblikket kode til at gentage gennem filer på min computer, selvom jeg forsøger at koble til knappen. Klik på hændelsen for at udføre dette, hvordan ville jeg gøre det her? Og hvor ville produktionen gå?


Kode nedenfor:


using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1\_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1\_Click(object sender, EventArgs e)
        {

        }
    }
}


public class FileSystemList : IEnumerable<string>
{
    DirectoryInfo rootDirectory;

    public FileSystemList(string root)
    {
        rootDirectory = new DirectoryInfo(root);
    }

    public IEnumerator<string> GetEnumerator()
    {
        return ProcessDirectory(rootDirectory).GetEnumerator();
    }

    public IEnumerable<string> ProcessDirectory(DirectoryInfo dir)
    {
        yield return dir.FullName;
        foreach (FileInfo file in dir.EnumerateFiles())
            yield return file.FullName;
        foreach (DirectoryInfo subdir in dir.EnumerateDirectories())
            foreach (string result in ProcessDirectory(subdir))
                yield return result;
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

Bedste reference


Du skal instantiere et FileSystemList objekt i din knap klikke hændelseshåndterer, kalder de metoder du har brug for på det (en foreach loop forekommer sandsynligvis).


Hvad angår resultaterne - sæt produktionen, hvor du vil have det. Det går hvor du som programmør vil have det til at gå.


var list = new FileSystemList(pathIWantToList);
foreach(var item in list)
{
  // do something
}

Andre referencer 1


Hvis du har .NET 4.0, kan du spare dig selv meget ved at bruge Directory.EnumerateFiles. [5]