0

我有一个 FileInfo 数组,它返回 15 个文件和一个“.zip”文件夹。我基本上需要尝试以某种方式将这个“.zip”文件从数组中过滤出来。任何帮助将不胜感激,但似乎我只是把头撞在砖墙上!这是我试图将其引入的代码;

public List<FileInfo> getInfo(bool recursive, int ageDays)
{
  //Declarations
  DirectoryInfo di = new DirectoryInfo(CurrentFilePath);
  FileInfo[] fi = new FileInfo[0];
  List<FileInfo> results = new List<FileInfo>();
  fileResults = new List<Files>();
  DateTime ageInDays = DateTime.Now.AddDays(-ageDays);

  //Checks for recursive search
  if (recursive)
  {
    try
    {
      fi = di.GetFiles("*.*", SearchOption.AllDirectories);
    }
    catch (Exception)
    {
    }
  }
  else
  {
    try
    {
      fi = di.GetFiles();
    }
    catch (Exception)
    {
    }
  }

  for (int i = 0; i < fi.Length; i++)
  {
    if (fi[i].LastWriteTime < ageInDays)
    {
      results.Add(fi[i]);
    }
  }
  return results;
}

提前致谢!

4

4 回答 4

1

最好更改您的代码:

for (int i = 0; i < fi.Length; i++)
{
    if ((fi[i].LastWriteTime < ageInDays) && fi.Extension.ToUpper() != ".ZIP")
    {
        results.Add(fi[i]);
    }
}

或使用 LINQ:

results = (from fi in results
           where fi.Extension.ToUpper() != ".ZIP"
           select fi).ToList<FileInfo>();
于 2012-02-22T10:38:01.503 回答
1

你有没有尝试过:

for (int i = 0; i < fi.Length; i++)
        {
            if (fi[i].LastWriteTime < ageInDays && fi[i].Extension != ".zip")
            {
                results.Add(fi[i]);
            }
        }
于 2012-02-22T10:38:33.790 回答
0

试试这个:

      _files = Directory.GetFiles(FTPOutputDirectory);
       foreach (string fi in _files)
         {
           string fi = Path.GetExtension(f);

            if (fi.ToUpper() != ".ZIP" )
             {
                // yourWork
             }
         }
于 2012-02-22T10:40:43.983 回答
0

您还可以使用 lambda 检查文件的扩展名

var files = di.GetFiles().Where(file => !file.FullName.EndsWith(".zip"));
于 2012-02-22T10:41:49.323 回答