gpt4 book ai didi

C# 使用过滤器删除文件夹中的文件

转载 作者:行者123 更新时间:2023-12-03 23:17:48 26 4
gpt4 key购买 nike

我正在使用 SharpDevelop 编写 C# 程序(不是控制台)。我想删除指定目录中的文件,但能够排除开头、结尾或包含特定单词的文件。

要完全删除我正在使用的文件夹中的所有文件:

private void clearFolder(string FolderName)
{
DirectoryInfo dir = new DirectoryInfo(FolderName);

foreach(FileInfo fi in dir.GetFiles())
{
fi.Delete();
}

foreach (DirectoryInfo di in dir.GetDirectories())
{
clearFolder(di.FullName);
di.Delete();
}
}

我喜欢用它

ClearFolder("NameOfFolderIWantToEmpty");

有没有办法修改它,以便我可以删除除包含特定单词的文件和目录之外的所有文件和目录?

类似的东西:

CleanFolder(FolderToEmpty,ExcludeAllFileAndDirectoriesContaingThisPhrase);

如果我这样做了

CleanFolder("MyTestFolder","_blink");

它不会删除名称类似

的文件和目录
_blinkOne (file)

Test_blineGreen (file)

Test_blink5 (directory)

_blinkTwo (file within the Text_blink5 directory)

Folder_blink (empty directory)

但是会像这样删除文件和目录

test (file)

test2 (directory)

test3_file (file within test2 directory)

test4 (empty directory)

我怀疑我可能必须遍历每个文件和目录,一次检查一个匹配的过滤器,如果不匹配则将其删除,但我不确定该怎么做。

也许是 FileInfo()DirectoryInfo()

有人可以提供一个工作示例来提供帮助吗?(以上的修改版本是首选,但如果需要一个新的方法,只要它不需要外部dll,就可以。

最佳答案

只需测试 FileInfo.Name 属性 (string) StartsWithEndsWith 是否为指定的字符串。

    foreach (FileInfo fInfo in di.GetFiles())
{
if (!fInfo.Name.StartsWith("AAA") ||
!fInfo.Name.EndsWith("BBB"))
{
fInfo.Delete();
}
}

或者,如果您要在文件名中的任何位置查找单词,请使用 Contains 方法:

    foreach (FileInfo fInfo in di.GetFiles())
{
if (!fInfo.Name.Contains("CCC"))
{
fInfo.Delete();
}
}

关于C# 使用过滤器删除文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com