2010-06-30 151 views

回答

127

看看System.IO.Directory類和靜態方法GetFiles。它有一個接受路徑和搜索模式的重載。例如:

string[] files = System.IO.Directory.GetFiles(path, "*.txt"); 
+0

謝謝!所有的答案都很好,但是你先回答了這個問題......是的:) – DMan 2010-06-30 18:37:34

+4

如果擴展名會像txt_一樣,這不起作用。我試圖確定文件夾中是否有* .exe文件,並且我只有一個* .exe_文件,但查詢返回它,這是不正確的。 – Adrian 2013-01-25 11:20:59

+1

該文檔:https://msdn.microsoft.com/en-us/library/8he88b63(v=vs.110).aspx – 2015-02-24 12:51:26

22

您可以使用Directory

Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories) 
+2

如果擴展名應該像txt_或其他名稱所述文檔https://msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx – 2015-02-24 12:50:26

13

這是很容易,其實。您可以將System.IO.Directory課程與System.IO.Path結合使用。像(使用LINQ使它更容易):

var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p)); 

// Get all filenames that have a .txt extension, excluding the extension 
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt") 
          .Select(fn => Path.GetFileNameWithoutExtension(fn)); 

當然,這種技術也有很多變化。如果您的過濾器更簡單,其他一些答案更簡單。這個優點是枚舉延遲(如果有的話)和更靈活的過濾,代價更大。

+0

感謝您爲此付出的所有額外工作。但是,我只是想要一個簡單的聲明,因爲我在目錄中只有一個文本文件(它是由我的程序提取的)。 – DMan 2010-06-30 18:29:41

1

下方回報的方法只有用特定擴展名的文件(例如:文件,以txt但不.txt1):

public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption) 
    { 
     return 
      Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption) 
       .Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase)); 
    } 
0

按我的理解,這可以通過兩種方式來完成1)您可以使用帶有Getfiles方法的Directory Class並遍歷所有文件來檢查我們需要的擴展名。

Directory.GetFiles( 「your_folder_path)[I]。載(」 *。TXT「)

2)可以使用與GetExtension方法Path類這需要文件路徑作爲參數,並驗證該extension.To獲取文件路徑,只是有一個循環的條件,將獲取一個單獨的文件,並返回一個可用於驗證的文件路徑。

Path.GetExtension(your_file_path).Equals(「JSON」 )

注意:兩個邏輯都必須在循環條件之內。

-1

使用此代碼讀取具有所有類型擴展名文件的文件。

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*"); 
相關問題