2017-10-12 39 views
-2

我正在項目中獲取選定驅動器中的所有文本文件。事情是我得到的所有文本文件的名稱與路徑,但我需要的是名稱。我甚至不想得到擴展名,我想要的只是該文本文件的名稱。我在互聯網上搜索了所有內容,但找不到正確的答案。我將所有這些名稱存儲在列表框中。這裏是我的代碼:不是全路徑和擴展GEt唯一的文件名而不是整個路徑

String[] dir1 = System.IO.Directory.GetDirectories(@"F:\"); 
for (int i = 0; i < dir1.Length; i++) 
{ 
    FileAttributes attributes = File.GetAttributes(dir1[i]); 

    if ((attributes & FileAttributes.Hidden) != fileAttributes.Hidden) 
    { 
     string folder = @""+ dir1[i]; 
     txtfiles = Directory.GetFiles(folder, "*.txt"); 
     listBox1.Items.AddRange(txtfiles); 
    } 
} 

我怎樣才能得到的只有名字,?

+2

'我已經找遍了所有在internet'似乎不太可能。將您的標題+「c#」提供給Google返回290萬次點擊 – Plutonix

回答

1

您需要使用Path.GetFileName方法,這將僅僅只從路徑返回提取的文件名,所以你可以做的是投影txtfiles獲取集合的只是文件名,如:

listBox1.Items.AddRange(txtfiles.Select(file=>Path.GetFileName(file)); 

,如果你只需要路徑,而不是實際讀它們,你可以使用EnumerateFiles方法,這將是在內存性能更好的具體做法是:

listBox1.Items.AddRange(txtDirectory.EnumerateFiles(folder, "*.txt") 
           .Select(file=>Path.GetFileName(file)) 
         ); 

此外,如果你只需要文件的名稱,沒有擴展名,那麼你可以d o建議使用Valuator answer

1

看看System.IO.Path.GetFileNameWithoutExtension()

你可以做類似

txtfiles = Directory.GetFiles(folder, "*.txt"); 
var fileNames = txtfiles.Select(System.IO.Path.GetFileNameWithoutExtension).ToList(); 
相關問題