2012-02-22 1 views
0

У меня есть массив FileInfo, который возвращает мне 15 файлов и одну папку «.zip». Мне в основном нужно попробовать и как-то отфильтровать этот «.zip» файл из массива. Любая помощь будет высоко оценена, но кажется, что я просто ударяю головой о кирпичную стену! Вот код, который я пытаюсь внедрить в это;C# - Фильтрация .zip-файла из массива FileInfo

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

Заранее благодарен!

ответ

1

Вы пробовали:

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

Это работает отлично. Я понятия не имел, что существует такая вещь, как «. Extension». Огромное спасибо! – Jacooobley

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>(); 
0

попробовать это:

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

      if (fi.ToUpper() != ".ZIP") 
      { 
       // yourWork 
      } 
     } 
0

Вы также можете использовать lambda для проверки расширения вашего файла.

var files = di.GetFiles().Where(file => !file.FullName.EndsWith(".zip")); 

 Смежные вопросы

  • Нет связанных вопросов^_^