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

本文关键字:文件名 获取 何使用 | 更新日期: 2023-09-27 18:11:04

我在一个文件夹中有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一样获得这些文件名。

有人能对此提出一些想法吗?

非常感谢。。。

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

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

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

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

我想你可以做

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

如果-总是出现在您感兴趣的文件名中

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

如果您感兴趣的文件名总是以abc-开头。

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

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

您可以使用与文件名匹配的正则表达式,大致如下:

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"(正则表达式语法(