Wie kann ich Dateien vergleichen?

olcayb

Mitglied
hallo,

wie kann ich dateien aus 2 pfaden (mit unterordnern) in ein verzeichnissen kopieren und bei doppelten soll (nach datum) verglichen werden und die aktuellsten dateien in ein zielverzeichnis kopiert werden.

vielen dank im vorraus für alle hilfreichen tipps :)

Olcay
 
Hallo!

Ich würde da so vorgehen:
1.) Datum und Uhrzeit von Datei1 auslesen
2.) Datum und Uhrzeit von Datei2 auslesen
3.) Daten und Zeiten beider Files miteinander vergleichen
4.) Neuere Datei in das Zielverzeichnis kopieren

Folgende Methoden dürften Dir dabei helfen:
Code:
// Letzte Schreibzeit auslesen
DateTime fileTime = System.IO.File.GetLastWriteTime(file);

// Letzte Zugriffszeit auslesen
DateTime fileTime = System.IO.File.GetLastAccessTime(file);

// Erstellungszeit auslesen
DateTime fileTime = System.IO.File.GetCreationTime(file);

// File kopieren (true = überschreiben, false wäre nicht überschreiben)
System.IO.File.Copy(source, destination, true);
Der Rest sollte klar sein. ;)
 
hab mich zu früh gefreut :( ich hab das ganze wie folgt geschrieben:

Code:
private void button_start_Click(object sender, System.EventArgs e)
		{
			int anz1, anz2;
			string path01, path02, path03;
			
			anz1 = listView01.CheckedItems.Count;
			anz2 = listView02.CheckedItems.Count;
			path01 = folderBrowserDialog1.SelectedPath; //Gewählte Pfad01
			path02 = folderBrowserDialog2.SelectedPath; //Gewählte Pfad02
			path03 = folderBrowserDialog3.SelectedPath; //Gewähltes Zielverzeichnis

			foreach (string item in listView01.SelectedIndices)
			{
				for (int i=0; i == anz1; i++)
				{
					for (int i2=0; i2 == anz2; i2++)
					{
						DateTime dt1 = File.GetCreationTime(path01 + "\\" + listView01.SelectedItems[i]);
						DateTime dt2 = File.GetCreationTime(path02 + "\\" + listView02.SelectedItems[i2]);

						if(listView01.SelectedItems[i] == listView02.SelectedItems[i2])
						{
							if (dt1 > dt2) //wenn datei01 älter als datei02 -> wird datei02 kopiert
							{
								File.Copy(path02 + "\\" + listView02.SelectedItems[i], path03, true);					
							}//if
							else //wenn datei02 älter als datei01 -> wird datei01 kopiert
							{
								File.Copy(path01 + "\\" + listView01.SelectedItems[i2], path03, true);
							}//else
						}//if
					}//for				
				}//for	
			}//foreach
		}

hab noch nie datume (wird das so geschrieben :p) verglichen bei dateien :/ hoffe das du oder jemand anderes helfen kann :)

olcay
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück