如何使用c#获取特定的文件名

时间:2011-10-11 20:23:10

标签: c# .net winforms file filenames

我在一个像这样的路径

的文件夹中有10个zip文件
  

TargetDirectory =“C:\ docs \ folder \”

某些zip文件名称是这样的

abc-19870908.Zip 
abc-19870908.zip
abc-12345678.zip

有些像这样......

doc.zip
doc123.zip  
..

我使用以下代码获取所有文件名...

string [] fileEntries = Directory.GetFiles(targetDirectory); 
foreach(string fileName in fileEntries)
{
  // here I need to compare , 
  // I mean I want to get only these files which are having 
  // these type of  filenames `abc-19870908.Zip`

  if (filename == "")
  {

       // I want to do something
   }
}

我需要在这行if(filename == "")中加上双引号来获得abc-19870908.Zip这些文件名。

请问任何人对此有任何想法吗?

非常感谢......

6 个答案:

答案 0 :(得分:10)

如果您只对包含短划线的zip文件感兴趣,可以向Directory.GetFiles提供搜索模式。

string [] fileEntries = Directory.GetFiles(targetDirectory, "*-*.zip"); 

有关这些搜索模式的详细信息,请查看此链接:http://msdn.microsoft.com/en-us/library/wz42302f.aspx

答案 1 :(得分:4)

我想你可以做到

 if (filename.Contains("-"))
 {
    ...
 }

如果您感兴趣的文件名中始终存在-

 if (filename.StartsWith("abc-"))
 {
    ...
 }

如果文件名始终以abc-开头,则表示您感兴趣的文件名。

答案 2 :(得分:1)

你可以if(filename.StartsWith ("abc-") )或者你可以if (filename.Contains ( "-" ) )或者你可以string [] fileEntries = Directory.GetFiles(targetDirectory, "abc-*.Zip");

答案 3 :(得分:1)

// Consider using this overload:
// public static string[] GetFiles( string path, string searchPattern)

string [] fileEntries = Directory.GetFiles(targetDirectory, "abc*.zip");

或者,您可以使用正则表达式,如下所示:

string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach(string fileName in fileEntries)
{
   if(Regex.Match (filename, @"abc.*?\.zip", RegexOptions.IgnoreCase))
   {
      // i want to do something
   }
 }

答案 4 :(得分:1)

List<String> files = Directory.GetFiles(@"C:\docs\folder\").ToList();
var g = from String s in files where s.StartsWith("abc") select s;
foreach(var z in g)
{
   //Do stuff in here as a replacement for your if
}

答案 5 :(得分:1)

您可以使用与您的文件名匹配的正则表达式,沿着这些行:

string sPattern = "abc-\d+\.zip";

string [] fileEntries = Directory.GetFiles(targetDirectory); 
foreach(string fileName in fileEntries)
{
  // here i need to compare , i mean i want to get only these files which are having these type of  filenames `abc-19870908.Zip`
  if(System.Text.RegularExpressions.Regex.IsMatch(filename , sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
  {

       // i want to do something
  }

}

正则表达式“abc- \ d + .zip”表示 字符串“abc-”后跟任意数字的数字,后跟a。后跟字符串“zip”(regular expression syntax