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

C# 如何删除目录中的所有.txt文件,c#,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;

请看以下代码:

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文件,并将创建“是”或“否”按钮,当单击“是”时,将创建“删除”,当单击“否”时,将创建“中止”按钮。

在进入循环之前询问问题,无需检查扩展名,因为您已要求仅返回具有txt扩展名的文件 顺便说一下,这次考试

if (filePath.EndsWith(".txt")) return;
是阻止删除原始代码中任何文件的原因(并反复询问相同的问题)


您的条件检查无效:

第一个条件应该是:

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);
 }

你必须把这个问题排除在外。您的代码将对它看到的与您的问题“删除所有文本文件?”相矛盾的每个文件执行MessageBox。

在您的代码中,当找到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);
}

现在有什么问题?(除了不编译之外)
if(filePath.EndsWith(“.txt”))返回
您想删除*.txt文件,那么为什么要在删除它们之前退出方法?:)请记住,您的问题也应该对未来的访客有所帮助。您问题的标题将用于搜索引擎。另外,不要在你的标题后面附加语言,它已经被标记了。唉,你真的要通过给他们一个完整的答案来鼓励这些糟糕的问题吗solution@musefan我同意这个问题的相对价值,但它尊重网站的所有规则。有一个问题,有一个错误的代码,所以我提供了一个答案。但OP甚至没有说代码有什么问题。例如,他们可能希望每个文件都有一个
MessageBox
。我认为应该鼓励OP改进他们的问题,而不是做出这样的假设。但是现在,我们有另一个不会学习的一次性用户,他们将在下周带着一个全新的帐户回来,并且仍然问一些不好的问题。我知道我的评论是未经请求的,我没有什么可说的。但我确实为你们的观点向你们两位致敬。我知道开始编程有多难,所以史蒂夫帮了我很大的忙。另一方面,穆塞凡也有自己的观点。我记得有一次我问一个程序员大师,他给我的只是,很简单,用谷歌搜索一下。我很生气,因为没有人愿意帮助我。所以我开始自学。但是@Steve,我尊重你,先生。我知道被忽视的感觉:)@Steve,谢谢你,先生。我们彼此不认识,但你说的话对我很重要。谢谢。Will
p.Extension
每次返回
“*.txt”
?它不会让我删除投票,它不知道有编辑,并说“除非编辑此答案,否则您的投票现在锁定”我知道谁发表了评论。如果是语法错误,请记住应该指出。如果我做错了什么,我会改正的,我道歉。我明白了。我的错,我只是觉得我应该继续这条线。非常抱歉。先生,我将删除评论。首先感谢您的帮助,我将更有条理地解决我的下一个问题。其次,这样的人鼓励像我这样的人继续学习,当其他人觉得我可以解决问题时,我愿意帮助他们。顺便问一下,我怎样才能给那个帮助过我的人发一条私人信息,避免不必要的谈话呢?我的朋友,感谢你的努力。我们在同一条船上,因为我们还有很多东西要学。不要介意落选。我得到了很多反对票。否决票并不意味着你的问题不好,它只是意味着你需要更多的努力来寻找解决方案,然后再发布问题。这是来自一个自学编程的人。@user3172547:你不能私下感谢别人。如果某个答案为您解决了问题,那么您应该通过单击左侧的勾号图标来接受该答案。
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);
}