2010-12-21 10 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(); 
} 

iSo suchen Sie nach verschiedenen Dateitypen in einem Verzeichnis?

.ESY

aber auch

"p-.csv"

nicht nur auf dem Array hinzufügen möchten, wie tue ich das?

Antwort

0

Unter der Annahme, dass der Code für einen Satz von Platzhalter funktioniert ...

Dann, nach diesen Zeilen:

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

Fügen Sie diese:

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

Ich denke, Sie müssen mehrmals mit verschiedenen Platzhaltern iterieren.

+0

ok u kann mir zeigen, wie ich an Array anhängen würde –

+0

erstellen 'Liste ' und rufen 'AddRange()' mehrmals. –

+0

Sie hängen bereits an eine Liste an, Sie müssen sie nur noch mit neuen Argumenten ausführen. –

1

Oder nur mehrere Filter und wählen Sie sie zusammen:

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

Da ist mein Gebot; Verzeichnisprüfung hinzugefügt.

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