2016-07-20 43 views
-1

使用VB.Net如何獲得一個文件名,而不使用下一

獲取文件名,而無需使用來自

Dim filefound = Directory.GetFiles("C:\", "1.txt") 
For Each inwardfile In filefound 
Dim strFilename As String = Path.GetFileName(inwardfile) 
Next 

上面的代碼工作正常的目錄下一個,但我不希望使用循環,因爲我總是在同一時間得到一個文件而不是文件的列表還我與文件名搜索不一樣的「* .txt」

所以如何修改代碼,任何一個可以協助。

+0

你能澄清嗎?你**不需要** * .txt文件? – Plutonix

+0

很難說你實際上正在做什麼......顯然在你的例子中文件名是「1.txt」,但是如果文件存在,你只會循環,所以也許你正在尋找類似於'Dim fi =新的FileInfo(「C:\ 1.txt」):如果fi.Exists然後昏暗strFilename = fi.Name ...'? – Mark

+0

是馬克,同樣我也希望得到同樣的,你能不能詳細請 – Gopal

回答

0

你的問題是不一致的,這使得它非常不清楚。你想要a file name還是他們的集合?如果你想filename not like "*.txt"那麼爲什麼要使用「1.txt」爲GetFiles

這將回答標題問題How to get a filename without using for next。爲此,假設一個完整的「.json」文件的目錄。一些命名爲cs ###。json(例如cs001.json)有些命名爲vb ###。json等等。

Path可以讓你檢查部分文件名,但DirectoryInfo將通過FileInfo對象提供對某些信息的訪問。這使用EnumerateFiles能夠過濾掉不需要的文件,所以它們甚至不會返回到您的代碼/數組變量。

Dim dix As New DirectoryInfo("C:\Temp\Json") 

獲取不以CS啓動的json文件。這將返回的FileInfo對象的數組的情況下,你需要做進一步排除:

Dim jFile = dix.EnumerateFiles.Where(Function(f) f.Extension = ".json" AndAlso 
         f.Name.StartsWith("cs") = False). 
        ToArray() 

獲取這些「* 1.json」,不與「CS」啓動JSON文件。在這種情況下,最後Select方法將導致返回文件名的數組:

Dim jFile = dix.EnumerateFiles.Where(Function(f) f.Extension = ".json" AndAlso 
         f.Name.EndsWith("1.json") AndAlso 
         f.Name.StartsWith("cs") = False). 
        Select(Function(q) q.Name). 
        ToArray() 

更改Select爲「功能(Q)q.FullName`如果你想的全路徑名。這些應該接近你真正想要的東西。

相關問題