如何删除目录中的所有.txt文件

时间:2014-01-08 09:30:20

标签: c#

查看此代码:

private void confirmBtn_Click(object sender, EventArgs e)
{

    string[] filePaths = System.IO.Directory.GetFiles(@"C:\test\", "*.txt");
    foreach (string filePath in filePaths)
    {

        if (filePath.EndsWith(".txt")) return;

        MessageBox.Show("Delete All Text Files?", "Delete Verification"
      , MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes
        {
            System.IO.File.Delete(filePath);
        }
    }

我想创建一个程序,它将删除特定目录中的所有.txt文件,并创建“是”或“否”按钮,单击“是”=“否”时取消。

4 个答案:

答案 0 :(得分:2)

在进入循环之前询问问题,并且无需检查扩展名,因为您已经要求仅返回带有TXT扩展名的文件 顺便说一下测试

if (filePath.EndsWith(".txt")) return;

是阻止删除原始代码中任何文件(并反复询问同一问题)的原因

    if(MessageBox.Show("Delete All Text Files?", "Delete Verification"
      , MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
    {
        string[] filePaths = System.IO.Directory.GetFiles(@"C:\test\", "*.txt");
        foreach (string filePath in filePaths)

            System.IO.File.Delete(filePath);
    }

答案 1 :(得分:1)

您的状况检查无效:。

第一个条件应该是:

if (!filePath.EndsWith(".txt")) return;

和第二:

 DialogResult res = MessageBox.Show("Delete All Text Files?", "Delete Verification", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
 if( res == DialogResult.Yes)
 {
    System.IO.File.Delete(filePath);
 }

答案 2 :(得分:0)

在代码中,当找到txt文件时,您将返回。而它应该是另一种方式。

if (filePath.EndsWith(".txt")) 
    return;

应该是

if (!filePath.EndsWith(".txt")) 
    return;

这应该这样做

string directoryPath = @"C:\test\";
string extension = "*.txt";
if (!Directory.Exists(directoryPath))
            return;

DirectoryInfo di = new DirectoryInfo(directoryPath);
FileInfo[] files = di.GetFiles(extension).Where(p => p.Extension.ToLowerInvariant() == ".txt").ToArray();
foreach (FileInfo file in files)
{
      file.Attributes = FileAttributes.Normal;
      File.Delete(file.FullName);
}

答案 3 :(得分:-1)

你必须把问题放在循环之外。您的代码会为它看到的每个文件执行MessageBox,这与您的问题“删除所有文本文件?”相矛盾。