0

FileInfo配列があり、15個のファイルと1個の「.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[i].Extension != ".zip")
            {
                results.Add(fi[i]);
            }
        }
于 2012-02-22T10:38:33.790 に答える
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 に答える
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

ラムダを使用してファイルの拡張子を確認することもできます

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