【发布时间】:2012-03-14 18:49:11
【问题描述】:
如何获得完整的文件名?
例如:
我有一个名为171_s.jpg 的文件存储在硬盘上。
我需要通过文件的部分名称(即171_s)找到文件,并获取全名。
我该如何实现?
【问题讨论】:
如何获得完整的文件名?
例如:
我有一个名为171_s.jpg 的文件存储在硬盘上。
我需要通过文件的部分名称(即171_s)找到文件,并获取全名。
我该如何实现?
【问题讨论】:
你可以使用System.IO.Directory.GetFiles()
http://msdn.microsoft.com/en-us/library/ms143316.aspx
public static string[] GetFiles(
string path,
string searchPattern,
SearchOption searchOption
)
路径 类型:System.String 要搜索的目录。
搜索模式 类型:System.String 与路径中的文件名匹配的搜索字符串。参数不能以两个句点(“..”)结尾或包含两个句点 ("..") 后跟 DirectorySeparatorChar 或 AltDirectorySeparatorChar,也不能包含任何字符 无效路径字符。
搜索选项 类型:System.IO.SearchOption SearchOption 值之一,指定搜索操作应包括所有子目录还是仅当前 目录。
【讨论】:
你可以这样做:
....
List<string> _filesNames;
foreach(var file in _directory)
{
string name = GetFileName(file);
if(name.IndexOf(_partialFileName) > 0)
{
_fileNames.Add(name);
}
}
....
【讨论】:
这是一个使用 GetFiles() 的示例:
static void Main(string[] args)
{
string partialName = "171_s";
DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(@"c:\");
FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + partialName + "*.*");
foreach (FileInfo foundFile in filesInDir)
{
string fullName = foundFile.FullName;
Console.WriteLine(fullName);
}
}
【讨论】:
EnumerateFiles 是这些天的首选方法
更新 - Jakub 回答是更有效的方法。 即,使用 System.IO.Directory.GetFiles() http://msdn.microsoft.com/en-us/library/ms143316.aspx
答案已经贴出来了,这里是代码方便理解
string folderPath = @"C:/Temp/";
DirectoryInfo dir= new DirectoryInfo(folderPath);
FileInfo[] files = dir.GetFiles("171_s*", SearchOption.TopDirectoryOnly);
foreach (var item in files)
{
// do something here
}
【讨论】: