比较文本框中的路径
本文关键字:路径 文本 比较 | 更新日期: 2023-09-27 18:29:57
我的WinForm中有几个文本框。然后我在这些文本框中插入一些文件的路径,例如:
textbox1: C:'Users'File1.txt
textbox2: C:'Users'John'Desktop'File2.txt
textbox3: C:'File1.txt
textbox4: D:'Stuff'File3.txt
.
.
.
我正在尝试检查:
- 如果每个文件都存在(例如,在这种情况下可能
File3.txt
不存在) - 如果任何文件具有相同的名称(例如,在本例中为
File1.txt
)
我如何用最少的代码量完成这项工作?我的代码对于这种事情来说太长了。
这是我用来检查文件是否存在的。我不知道如何开始处理重复的文件。
int filesDontExist = 0;
if (!String.IsNullOrEmpty(textbox1.Text))
{
if (!File.Exists(textbox1.Text)) { filesDontExist++; }
}
if (!String.IsNullOrEmpty(textbox2.Text))
{
if (!File.Exists(textbox2.Text)) { filesDontExist++; }
}
if (!String.IsNullOrEmpty(textbox3.Text))
{
if (!File.Exists(textbox3.Text)) { filesDontExist++; }
}
if (!String.IsNullOrEmpty(textbox4.Text))
{
if (!File.Exists(textbox4.Text)) { filesDontExist++; }
}
if (filesDontExist == 0) { MessageBox.Show("All files exist!"); }
else { MessageBox.Show("At least one file doesn't exist!"); }
首先使用LINQ的Select
方法获取所有路径:
var paths = this.Controls.OfType<TextBox>().Select(x => x.Text);
然后使用File.Exists
确定是否存在所有文件:
var allFilesExist = paths.All(File.Exists);
使用Path.GetFileName
方法获取所有文件名,然后使用GroupBy
:检查是否存在重复
var isDuplicate = paths.Select(x => Path.GetFileName(x))
.GroupBy(x => x)
.Any(g => g.Count() > 1);