2016-04-09 3 views
0

У меня возникли проблемы с удалением файла. В настоящее время у меня есть список, в котором хранится содержимое каталога. Я могу удалить запись из списка, но не соответствующий файл, поэтому, когда программа перезапускается, запись снова появляется, поскольку файл не был удален.Невозможно удалить файл из каталога

Это мой код:

private void button3_Click(object sender, EventArgs e) 
{ 
    //removes selected item from listbox 
    foreach (int Index in listBox1.SelectedIndices.Cast<int>().Select(x => x).Reverse()) 
     listBox1.Items.RemoveAt(Index); 

    string[] files = Directory.GetFiles(".\\Notes\\"); 

    //Gets selected listbox item as string 
    string fileName = listBox1.GetItemText(listBox1.SelectedItem); 

    if (fileName.Equals(files)) 
    { // not deleting, yet! 
     File.Delete(".\\Notes\\"+ files); 
    } 

    MessageBox.Show("Note deleted!", "ModNote", 
    MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 
+0

Вы сравниваете строку с 'string []'. Это не сработает. – germi

+0

Вы также пропустили '{}' после инструкции 'foreach'. Вероятно, это не так, как вы думаете. –

+0

Два {} являются необязательными, но его не очень хороший стиль кода, чтобы оставить их. – BHuelse

ответ

1

Вы должны изменить, если состояние. Вместо

if (fileName.Equals(files)) 
{ 
    File.Delete(".\\Notes\\"+files);  
} 

записи

if (files.Contains(fileName)) 
{ 
    File.Delete(".\\Notes\\"+fileName);  
} 

Есть по крайней мере два вопроса: На этот раз, вы сравниваете string (fileName) с string[] (files). Кроме того, вы строили неправильный путь, объединяя «. \ Notes \» с массивом.

Смежные вопросы