C# Ordner Inhalt mit Datei Inhalt vergleichen

Status
Für weitere Antworten geschlossen.

PhilippVP

Cadet 2nd Year
Registriert
Juni 2013
Beiträge
24
Hallo alle zusammen,

ich habe eine Frage zu meinem Problem an dem ich schon seit einer Woche fest hänge und einfach nicht mehr weiter komme. Ich hoffe Ihr könnt mir da helfen.

Also ich will den Inhalt eines Ordners mit dem Inhalt einer Textdatei vergleichen.

Beispiel: Im Ordner liegen 2 Bilder (123.jpg, 456.jpg) und in der Textdatei steht nur 123.jpg, jetzt soll das Bild (456.jpg) im Ordner in ein anderes verzeichnis verschoben werden, d. h. wenn ein Bild im Ordner liegt, aber nicht in der Textdatei vorhanden ist soll dieses Bild verschoben werden in ein anderes Verzeichnis. Habt ihr da mal eine Idee wie ich das machen kann?

mein bisheriger Code ist dieser:
Code:
            System.IO.DirectoryInfo dInfo;
            System.IO.FileInfo fInfo;
            System.IO.StreamReader sReader;
            List<string> lstFiles;

            try
            {
                if (txtOrdnerPfad.Text.Length > 0 && txtOrdnerPfad.Text != _TxtFolderTextAtStartup && txtTextdateiPfad.Text.Length > 0 && txtTextdateiPfad.Text != _TxtTextFileAtStartup)
                {
                    dInfo = new System.IO.DirectoryInfo(txtOrdnerPfad.Text);
                    if (!dInfo.Exists)
                        throw new NullReferenceException("Ordner existiert nicht oder ist schreibgeschützt");

                    fInfo = new System.IO.FileInfo(txtTextdateiPfad.Text);
                    if (!fInfo.Exists)
                        throw new NullReferenceException("Datei existiert nicht oder ist durch die Benutzung eines anderen Benutzer schreibgeschützt");

                    fInfo = null;
                    sReader = new System.IO.StreamReader(txtTextdateiPfad.Text);
                    lstFiles = new List<string>();
                    do
                    {
                        lstFiles.Add(sReader.ReadLine());
                    }
                    while (!sReader.EndOfStream);

                    foreach (string strFileName in lstFiles)
                    {
                        txtProtocol.Text += strFileName + " Existiert? --> ";
                        txtProtocol.Text += (from dFiles in dInfo.GetFiles() where dFiles.Name == strFileName select dFiles).Count() > 0;
                        txtProtocol.Text += Environment.NewLine;
                    }

Ich hoffe Ihr könnt mir helfen, bin für jede Hilfe dankbar.

Mit freundlichen Grüßen
Philipp
 
1) Stecke jeden Dateinamen aus der Datei in ein String - 'HashSet' (lowercase)
2) Gehe die Dateien im Verzeichnis durch und schau im 'HashSet' nach ob der Name drin ist (lowercase nicht vergessen).
3) Wenns nicht im Hashset ist, dann Datei verschieben
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben