如何获取文件名而不使用for next

时间:2016-07-20 15:52:11

标签: vb.net

使用VB.Net

从目录

获取文件名而不使用for next
1,254.00

上面的代码工作正常,但我不想使用for循环因为我总是会得到一个文件而不是文件列表我也在搜索文件名不像“* .txt”

那么如何修改代码,任何人都可以提供帮助。

1 个答案:

答案 0 :(得分:0)

你的问题不一致,这使得它非常不清楚。你想要a file name还是它们的集合?如果您需要filename not like "*.txt",那么为什么要将“1.txt”用于GetFiles

这将回答标题问题How to get a filename without using for next。为此,假设一个目录充满了“.json”文件。有些被命名为c ###。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”的json文件,不要以“cs”开头。在这种情况下,最后一个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更改为'Function(q)q.FullName`。这些应该接近你真正想要的东西。