2016-03-25 8 views
0

ワイルドカード検索を使用して、デスクトップで「test」という単語で終わるものを検索しようとしています。ファイルパスでワイルドカード検索を使用するC#

私はこの(ExcelToDataTable)を持っているが、パラメータとしてstringに取ります

ExcelToDataTable(@"C:\Users\name\Desktop\*test.xls"); 

その後、私は私がテストして名付けられたシートからプルしようとしていたデータをいくつかのことを行い、私の方法を持っています。

public static DataTable ExcelToDataTable(string filePath) 
{ 
    DataTable dt = new DataTable(); 
    using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) 
    { 

    } 
} 

だから私の質問は、私の提供された例で、ワイルドカードを使用して、私のExcelToDataTableメソッドにそれを養うために方法はありますか?私は、私は新しい方法になるだろう

おかげ

+0

もエクステがありますかlinqを使用してキーワード '.EndWith()'を使用してファイルを検索するnsionメソッド – MethodMan

答えて

2

...単語末尾のtestを持っている私のデスクトップ上のすべての.xlsファイルを検索するためにディレクトリパスを受け入れ、「1つのレベルアップ」を望んでいますその中にあるすべてのxlsファイルを見つけ、それらをリストのメソッドに渡します。

public static List<DataTable> ProcessDataTables(string dirPath) 
    { 
       xlsFiles = System.IO.Directory.GetFiles(dirPath, "*test.xls") 
       var results = new List<DataTable> 
       foreach(var file in xlsFiles) 
        results.Append(ExcelToDataTable(file)) 
       return results 
    } 

あなたは何のXLSファイルはこれを呼び出して何が場合、戻り値として空のリストでOKです、dirPathが実際に存在するディレクトリへのパスであることを確認するように(そこにいくつかの健全性チェックを考慮するべきではありません)

一般に、あなたのデスクトップをハードコーディングする代わりに、Environment.SpecialFolder.Desktopを使用することをお勧めします。

0

あなたは、たとえば次の操作を行うことができあなたが.text内線で終わるファイルを探しているなら、私はあなたのケースで

var fi = new System.IO.DirectoryInfo(sDir).GetFiles(). 
    Where(f => !(f.FullName.EndsWith(".jpg") || f.Name.EndsWith(".txt"))).ToArray(); 

を次の操作を行うことができ.jpg and .txtで終わるファイルを検索したいと言うことができますそして、あなたはまた、次のようにGoogle検索を行うことができ、次の

var fi = new System.IO.DirectoryInfo(sDir).GetFiles(). 
    Where(f => !(f.FullName.EndsWith(".text") || f.Name.EndsWith(".Text"))).ToArray(); 

C# Linq Directory.EnumerateFiles()方法

関連する問題