C#如何仅通过部分名称(客户编号)判断文件夹是否存在
需求背景
我已经实现了基于两个文本框输入创建客户文件夹的功能:
- Textbox1 用于输入4位格式的客户编号
XXXX - Textbox2 用于输入客户名称
生成的文件夹命名规则为「客户编号+空格+客户名称」,该逻辑目前运行正常。
现在需要新增前置校验:创建文件夹前,仅通过输入的客户编号 判断根目录下是否存在同编号前缀的文件夹(所有存量文件夹都符合「客户编号+客户名称」的命名规则),避免同个客户编号重复创建文件夹。
现有可运行代码
{ string no = textBox1.Text; string client = textBox2.Text; string carpeta = @"C:\" + no + " " + client; string sourcePath = @"C:\main"; string destinationPath = @"C:\" + no + " " + client; textBox1.Clear(); textBox2.Clear(); try { if (Directory.Exists(carpeta)) { DialogResult y; y = MessageBox.Show("Folder already exists\nDo you want to open it?", "AE.", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (y == DialogResult.Yes) { System.Diagnostics.Process.Start(@"C:\" + no + " " + client); } else { Close(); } } else { DialogResult x; x = MessageBox.Show("The folder doesn't exist\nWant to create a folder?." + "\n" + no + " " + client, "AE.", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (x == DialogResult.Yes) { Directory.CreateDirectory(carpeta); FileSystem.CopyDirectory(sourcePath, destinationPath, UIOption.AllDialogs); System.Diagnostics.Process.Start(@"C:\" + no + " " + client); } else { Close(); } } } catch (Exception ex) { MessageBox.Show("Error:" + ex.Message); } }
代码修改方案
你只需要在获取到no变量值之后,原有文件夹存在性判断之前,新增一段同编号前缀检索逻辑即可:
// 新增逻辑开始 // 只检索C盘根目录下、前缀为当前客户编号+空格的文件夹 string[] matchedFolders = Directory.GetDirectories(@"C:\", $"{no} *", SearchOption.TopDirectoryOnly); if (matchedFolders.Length > 0) { // 存在同编号文件夹,拦截创建,可自定义提示逻辑 string existFolderName = Path.GetFileName(matchedFolders[0]); DialogResult res = MessageBox.Show($"已存在客户编号 {no} 对应的文件夹:{existFolderName}\n是否直接打开该文件夹?", "重复提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (res == DialogResult.Yes) { System.Diagnostics.Process.Start(matchedFolders[0]); } Close(); return; } // 新增逻辑结束
逻辑说明:
- 通配符
{no} *只会匹配名称以当前输入的客户编号开头、后面紧跟空格的文件夹,避免出现编号前缀重合的误判(比如输入123不会匹配到编号1234的文件夹) SearchOption.TopDirectoryOnly指定只检索C盘根目录,不递归查子文件夹,性能更好- 如果有匹配的文件夹,你可以根据业务需要调整后续逻辑,比如直接提示不能创建,或者给用户打开已有文件夹的选项
内容的提问来源于stack exchange,提问作者Víctor Rodríguez
相关产品推荐
相关产品推荐

