2010-12-21 76 views
1
public List<string> MapMyFiles() 
{ 
    List<FileInfo> batchaddresses = new List<FileInfo>(); 
    foreach (object o in lstViewAddresses.Items) 
    { 
     try 
     { 
      string[] files = Directory.GetFiles(o.ToString(), "*-E.esy"); 
      files.ToList().ForEach(f => batchaddresses.Add(new FileInfo(f))); 
     } 
     catch 
     { 
      if(MessageBox.Show(o.ToString() + " does not exist. Process anyway?", 
         "Continue?", MessageBoxButtons.YesNo) 
       == DialogResult.Yes) { } 
      else 
      { 
       Application.Exit(); 
      } 
     } 
    } 

    return batchaddresses.OrderBy(f => f.CreationTime) 
      .Select(f => f.FullName).ToList(); 
} 

我想添加到陣列不僅如何在目錄中查找不同類型的文件?

.ESY

而且

「P-的.csv」

如何我是否這樣做?

回答

0

假設你的代碼適用於一組通配符...

這些行,然後進行:

string[] files = Directory.GetFiles(o.ToString(), "*-E.esy"); 
files.ToList().ForEach(f => batchaddresses.Add(new FileInfo(f))); 

添加這些:

files = Directory.GetFiles(o.ToString(), "*p-.csv"); 
files.ToList().ForEach(f => batchaddresses.Add(new FileInfo(f))); 
0

我認爲你必須用不同的通配符重複多次。

+0

確定u能告訴我怎樣我會追加到陣列 – 2010-12-21 20:43:11

1

或者只是包括更多的過濾器,並選擇他們在一起:

var filters = new[] { "*-E.esy", "*p-.csv" }; 
var files = filters.SelectMany(f => Directory.GetFiles(o.ToString(), f)); 
// .. etc. 
0
public List<string> MapMyFiles() 
{ 
    List<FileInfo> batchaddresses = new List<FileInfo>(); 
    foreach (object o in lstViewAddresses.Items) 
    { 
     DirectoryInfo di = new DirectoryInfo(o); 
     if (!di.Exists && MessageBox.Show(o.ToString() + " does not exist. Process anyway?", "Continue?", MessageBoxButtons.YesNo) != DialogResult.Yes) 
      Application.Exit(); 

     (new List<string>(new[]{ "*-E.esy", "*p-.csv" })).ForEach(filter => { 
      (new List<string>(di.GetFiles(filter))).ForEach(file => { 
       batchaddresses.Add(new FileInfo(file)); 
      }); 
     }); 
    } 

    return batchaddresses.OrderBy(f => f.CreationTime).Select(f => f.FullName).ToList(); 
} 

這是我的出價;添加目錄檢查。

0
try 
{ 
    foreach (string searchPattern in searchPatterns) 
    { 
     string[] files = Directory.GetFiles(o.ToString(), searchPattern); 
     files.ToList().ForEach(f => batchaddresses.Add(new FileInfo(f))); 
    } 
} 
相關問題