2011-06-13 241 views
3

我正在尋找一種方法來讀取目錄路徑中的所有txt文件,而不需要將它們擴展到數組中。我查看了path.getFileNameWithoutExtension,但只返回一個文件。我想從一個路徑上的所有* .txt文件名我指定C#獲取所有沒有目錄擴展名的文件名

感謝

回答

13
Directory.GetFiles(myPath, "*.txt") 
    .Select(Path.GetFileNameWithoutExtension) 
    .Select(p => p.Substring(1)) //per comment 
+0

還有一個要求是我需要修剪所有文件名中的第一個字符。我該怎麼做呢? – hWorld 2011-06-13 20:48:02

+0

單個選擇比兩個效率更高^^ – Falanwe 2011-06-13 20:54:58

+0

您的問題有點不清楚。 'filename.Substring(0,1)'只會給你第一個字符。 'filename.Substring(1)'會給你一切,但第一個字符。 – David 2011-06-13 21:00:30

5

喜歡的東西:

String[] fileNamesWithoutExtention = 
Directory.GetFiles(@"C:\", "*.txt") 
.Select(fileName => Path.GetFileNameWithoutExtension(fileName)) 
.ToArray(); 

應該做的伎倆。

0
var filenames = Directory.GetFiles(myPath, "*.txt") 
.Select(filename => Path.GetFileNameWithoutExtension(filename).Substring(1)); 

(子串(1))加入用於解說的規範)

0
var files = from f in Directory.EnumerateFiles(myPath, "*.txt") 
      select Path.GetFileNameWithoutExtension(f).Substring(1); 
0

只是需要將其轉換爲陣列[]

string targetDirectory = @"C:\..."; 

// Process the list of files found in the directory. 
    string[] fileEntries = Directory.GetFiles(targetDirectory, "*.csv").Select(Path.GetFileNameWithoutExtension).Select(p => p.Substring(0)).ToArray(); 

    foreach (string fileName in fileEntries) 
     { 
      //Code 
     } 
相關問題