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

4

我有一个包含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
   }
}

在这一行中,我需要在双引号中放什么才能得到像 abc-19870908.Zip 这样的文件名:if(filename == "")

请问有人可以提供任何想法吗?

非常感谢...

6个回答

10

如果你只对包含破折号的zip文件感兴趣,你可以为Directory.GetFiles提供一个搜索模式。

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

查看此链接以获取有关这些搜索模式的更多信息:http://msdn.microsoft.com/en-us/library/wz42302f.aspx


4

我猜你能做到。

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

如果你需要的文件名中始终包含“-”

或者

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

如果你关心的文件名总是以abc-开头。

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
   }
 }

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
}

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-" 后跟任意数量的数字,后跟一个点,再后跟字符串 "zip" (正则表达式语法)。

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接