Per le directory puoi controllare se hanno nome uguale o contengono gli stessi file e/o cartelle. Nel primo caso bisogna solo confrontare il nome, ed è semplice. Nel secondo caso puoi usare le funzioni GetFiles(Dir) e GetDirectories(Dir) di IO.Directory, che restituiscono i files e le cartelle presenti nella cartella Dir: esegui quindi un confronto di array per controllare se ci sono file e/o cartelle con lo stesso nome. Se vuoi approfondire la ricerca, e questo vale anche per il confronto file-file, puoi controllare che ogni file con lo stesso nome abbia anche lo stesso contenuto. In questo caso usi la classe IO.BinaryReader per un confronto binario: prelevi tutti i bytes da ciascun file e confronti gli array. Un controllo preventivo che potresti eseguire è anche quello di controllare se i due files o le due cartelle hanno la stessa dimensione (ond'evitare di addentrarti in altri controlli inutili): usa IO.FileInfo.Length (o anche FileSize) per calcolare la grandezza di un file e una funzione ricorsiva per calcolare quella della directory. Il mio consiglio è di strutturare il controllo su diversi livelli, ossia:
codice:
Controllo Cartella - Cartella:
1- Nome della cartella
2- Grandezza della cartella
3- Nomi dei files e sotto-cartelle della cartella
4- Grandezza dei files e sotto-cartelle della cartella (opzionale, difficilmente cartelle avranno la medesima dimensione anche con files diversi: questione di pochi bytes)
5- Contenuto dei files e sotto-cartelle della cartella: per i file confronto binario; per le sotto-cartelle, torna al punto 1.
Controllo File - File:
1- Nome del file
2- Grandezza del file
3- Contenuto del file