区分范围中的命名文件
本文关键字:文件 范围 | 更新日期: 2023-09-27 18:33:10
我正在循环浏览文件主扩展名为".123"的目录中的文件名。该文件被拆分为扩展名为".456"的跨度,其名称与主文件类似,但末尾的编号序列不同。
我被赋予了主文件名"CustomerName_123456_Name-of-File.123",并且还需要查找所有跨度文件。我面临的问题是,如果有两个文件的名称几乎相同,我最终会捕获所有文件。
我文件CustomerName_123456_Name.123
文件CustomerName_123456_Name 001.456
文件CustomerName_123456_Name 002.456
文件CustomerName_123456_Name 002.456
CustomerName_123456_Name文件几乎相同.123
文件CustomerName_123456_Name几乎相同001.456
文件CustomerName_123456_Name几乎相同002.456
文件CustomerName_123456_Name几乎相同002.456
正在使用一些非常基本和有限的代码来完成我目前拥有的结果。
public static string[] GetFilesInDirectory(string FileName, string Path)
{
string[] FilesInPath = { "" };
List<string> results = new List<string>();
try
{
FilesInPath = Directory.GetFiles(Path);
foreach (string FileInPath in FilesInPath)
{
if (FileInPath.IndexOf(Path.GetFileNameWithoutExtension(FileName)) > -1)
{
results.Add(Path.GetFileName(FileInPath));
}
}
FilesInPath = null;
return results.ToArray();
}
catch (Exception ex)
{
return results.ToArray();
}
}
如果我调用函数GetFilesInDirectory('CustomerName_123456_Name-of-File.123', 'C:'')
它会返回所有文件。
有没有更好更准确的方法来实现这一目标?
更新:
我使用答案中的一些建议写了一些逻辑:
public static string[] GetImageFilesInDirectory(string FileName, string Path)
{
string[] FilesInPath = { "" };
List<string> results = new List<string>();
try
{
FilesInPath = Directory.GetFiles(Path, Path.GetFileNameWithoutExtension(FileName) + "???.???", SearchOption.TopDirectoryOnly);
foreach (string FileInPath in FilesInPath)
{
if (Path.GetExtension(FileInPath).ToLower() == Path.GetExtension(FileName).ToLower())
{
if (Path.GetFileNameWithoutExtension(FileInPath) == Path.GetFileNameWithoutExtension(FileName))
{
results.Add(Path.GetFileName(FileInPath));
}
}
else
{
if (FileInPath.IndexOf(Path.GetFileNameWithoutExtension(FileName)) > -1)
{
results.Add(Path.GetFileName(FileInPath));
}
}
}
FilesInPath = null;
return results.ToArray();
}
catch (Exception ex)
{
return results.ToArray();
}
}
为Directory.GetFiles
提供搜索模式来限制CustomerName_123456_Name-of-File???.456
返回的内容。
resutls = Directory.GetFiles(
Path,
Path.GetFileNameWithoutExtension(FileName) + "???.456").ToList();
您正在调用 Path.GetFileNameWithoutExtension((,它会忽略文件名的".xxx"部分,并且还将返回任何包含"CustomerName_123456_Name-of-File"的文件。
简单的解决方案是使用所需文件的全名调用 Path.GetFileName((,假设您正在寻找一个特定的文件,而不是尝试捕获多个文件。