vb.net – 如何在文件名Visual Basic.net中使用特定单词在目录中查找或获取文件?

我需要从包含特定字符的目录中获取文件名称:
以下代码将返回任何扩展名为.csv的文件.问题是还有其他csv文件我需要单独留下或不能得到.

Dim FileLocation As DirectoryInfo = _
 New DirectoryInfo("C:\Folder\Subfolder\Data\Input\")

Dim fi As FileInfo() = FileLocation.GetFiles("*.csv")

我想获取一个包含单词data的文件,而不是获取任何csv文件,因此任何文件名都包含单词data.示例:* my_data_file.csv *

如何使用上面的代码执行此操作?

解决方法

您可以使用要考虑的字符串更新过滤器(将自动处理上限):

Dim fi As FileInfo() = FileLocation.GetFiles("*data*.csv")

无论如何,请记住这种过滤不是“太准确”.例如,上面的代码也将考虑任何文件(包括“数据”),其扩展名包括csv(例如,* .csva,* .csvb等).如果你想要一个100%可靠的方法,你应该更好地设置一个循环并“手动”执行过滤;循环非常快,你甚至不会注意到差异.

循环示例:

Dim fi As List(Of FileInfo) = New List(Of FileInfo)
For Each File In FileLocation.GetFiles()
    If (File IsNot Nothing) Then
        If (Path.GetExtension(File.ToString.ToLower) = ".csv") Then
            If (File.ToString.ToLower.Contains("data")) Then fi.Add(File)
        End If
    End If
Next

此代码将根据您的确切要求运行,并可能会处理更复杂的请求.我已经考虑了一个列表,只是为了更清楚地表明这一点.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...