试图删除文件夹中的所有文件,但在 c# 中删除 2 个选定文件
Trying to delete all files in a folder exept 2 selected files in c#
我只是想写一个简单的程序来清除我的 "Path" 文件夹,除了预选的 2 个 .exe 文件。问题是我只成功删除了第一个 (file1.exe)。
我究竟做错了什么?如果我使用的是逻辑运算符,请原谅我,但此刻我的脑袋快要爆炸了...
string[] filePaths = Directory.GetFiles(Path);
foreach (string filePath in filePaths)
{
var name = new FileInfo(filePath).Name;
name = name.ToLower();
if (name != "file1.exe" || name != "file2.exe")
{
File.Delete(filePath);
}
}
根据您的情况使用 &&
而不是 ||
。
if (name != "file1.exe" && name != "file2.exe")
您还可以过滤掉具有 LINQ 表达式的文件,例如:
var filePaths = Directory.GetFiles(Path)
.Where(r=> !r.Equals("file1.exe", StringComparison.InvariantCultureIgnoreCase)
&& !r.Equals("file2.exe", StringComparison.InvariantCultureIgnoreCase));
然后你可以做:
foreach (string filePath in filePaths)
{
File.Delete(filePath);
}
你基本上是说,如果 name 不等于 "file1.exe" OR name != "file2.exe" 然后删除文件路径,问题是你使用的是 OR 逻辑运算符所以它只删除一。尝试使用 &&.
我只是想写一个简单的程序来清除我的 "Path" 文件夹,除了预选的 2 个 .exe 文件。问题是我只成功删除了第一个 (file1.exe)。 我究竟做错了什么?如果我使用的是逻辑运算符,请原谅我,但此刻我的脑袋快要爆炸了...
string[] filePaths = Directory.GetFiles(Path);
foreach (string filePath in filePaths)
{
var name = new FileInfo(filePath).Name;
name = name.ToLower();
if (name != "file1.exe" || name != "file2.exe")
{
File.Delete(filePath);
}
}
根据您的情况使用 &&
而不是 ||
。
if (name != "file1.exe" && name != "file2.exe")
您还可以过滤掉具有 LINQ 表达式的文件,例如:
var filePaths = Directory.GetFiles(Path)
.Where(r=> !r.Equals("file1.exe", StringComparison.InvariantCultureIgnoreCase)
&& !r.Equals("file2.exe", StringComparison.InvariantCultureIgnoreCase));
然后你可以做:
foreach (string filePath in filePaths)
{
File.Delete(filePath);
}
你基本上是说,如果 name 不等于 "file1.exe" OR name != "file2.exe" 然后删除文件路径,问题是你使用的是 OR 逻辑运算符所以它只删除一。尝试使用 &&.