Ich kann keine Antwort auf diese Art von Problem irgendwo im Internet finden, so dass ich dachte, ich könnte mich auch fragen. Ich muss in der Lage sein, eine Taste zu drücken, die dann eine Funktion ausführt, die das ausgewählte Dateiverzeichnis und alle Unterordner danach durchsucht, um zu sehen, ob dieselbe Datei zweimal vorhanden ist. Ich werde im Folgenden alle notwendigen Code setzen:Wie kann ich die Duplikate in einer Listbox mit einem Knopf anzeigen C#
public partial class fileForm : Form
{
private string _filelistlocation;
private string _fileDest;
private string _fileSource;
public fileForm()
{
InitializeComponent();
}
public void fileForm_Load(object sender, System.EventArgs e)
{
_filelistlocation = textBox1.Text;
_fileDest = labelDestRoot.Text;
_fileSource = labelSourceRoot.Text;
}
private void button1_Click(object sender, System.EventArgs e)
{
checkedListBox1.Items.Clear();
listBox2.Items.Clear();
ReadFromList();
}
private void GetDuplicates()
{
DirectoryInfo directoryToCheck = new DirectoryInfo(@"C:\temp\Location Source");`
FileInfo[] files = directoryToCheck.GetFiles("*.*", SearchOption.AllDirectories);
var duplicates = files.GroupBy(x => x.Name)
.Where(group => group.Count() > 1)
.Select(group => group.Key);//display duplicates
if (duplicates.Count() > 0)
{
MessageBox.Show("No Dupes");
FileStream s2 = new FileStream(_filelistlocation, FileMode.Open, FileAccess.Read, FileShare.Read);
}
else
listBox1.Items.Add(duplicates);`
}
private void button5_Click_1(object sender, EventArgs e)
{
GetDuplicates();
}
EDIT: `private void GetDuplicates() { Directory directoryToCheck = new Directory (@ "C: \ temp \ Location Source");
FileInfo[] files = directoryToCheck.GetFiles("*.*", SearchOption.AllDirectories);
var duplicates = files.GroupBy(x => x.Name)
.Where(group => group.Count() > 1)
.Select(group => group.Key);//display duplicates
if (!duplicates.Any())
{
listBox1.Items.Add(duplicates);
FileStream s2 = new FileStream(_filelistlocation, FileMode.Open, FileAccess.Read, FileShare.Read);
}
else
MessageBox.Show("No Dupes");
}`
so?
EDIT 2:
private void GetDuplicates()
{
DirectoryInfo directoryToCheck = new DirectoryInfo(@"C:\temp\Location Source");
FileInfo[] files = directoryToCheck.GetFiles("*.*", SearchOption.AllDirectories);
var duplicates = files.GroupBy(x => x.Name)
.Where(group => group.Count() > 1)
.Select(group => group.Key);//display duplicates
if (!duplicates.Any())
{
listBox1.Items.Add(duplicates.ToArray());
FileStream s2 = new FileStream(_filelistlocation, FileMode.Open, FileAccess.Read, FileShare.Read);
}
else
MessageBox.Show("No Dupes");
}
Wenn jemand das wäre schön helfen könnte. Vielen Dank!
Was ist das Problem, das Sie mit dem entsandten Code konfrontiert sind? –
Wenn ich auf die Schaltfläche klicke, erscheint die Meldung "No Dupes", während das, was ich trotzig teste, Duplikate hat. –
Da Sie die Nachricht bei if Block anzeigen, sollte es bei else Block sein. –