【问题标题】:List files, filtered by extension without path列出文件,按扩展名过滤,不带路径
【发布时间】:2018-02-07 08:14:55
【问题描述】:

由于难以在同一行代码中过滤和列出几种类型的文件,如下所示:System.IO.directory.getfiles(path, "*.avi, *.flv, *mpg" 我正在使用排序的 ListBox,下一个代码为每种格式一行:

Dim newdir As String
 ListBox3.Items.AddRange(System.IO.Directory.GetFiles(newdir, "*.avi"))
 ListBox3.Items.AddRange(System.IO.Directory.GetFiles(newdir, "*.flv"))
 ListBox3.Items.AddRange(System.IO.Directory.GetFiles(newdir, "*.mpg"))

此代码按字母顺序列出了已知的 VIDEO 文件,唯一的问题:它列出了包含扩展名的完整路径!我该如何管理这个以在最简单的代码中只获得没有扩展名的名称?我的意思是适应一些类似.GetFileNameWithoutExtension的结构:

IO.Path.GetFileNameWithoutExtension())

(但它不能过滤格式)不是吗?

【问题讨论】:

  • 如果有多个同名但扩展名不同的文件,例如: “kitten.avi”和“kitten.mpg”?

标签: vb.net list listbox format getfiles


【解决方案1】:

您可以使用LINQ,如下所示:

Dim files As New List(Of String)
files.AddRange(IO.Directory.GetFiles(newdir, "*.avi").
               Select(Function(f) IO.Path.GetFileNameWithoutExtension(f)))
files.AddRange(IO.Directory.GetFiles(newdir, "*.flv").
               Select(Function(f) IO.Path.GetFileNameWithoutExtension(f)))
files.AddRange(IO.Directory.GetFiles(newdir, "*.mpg").
               Select(Function(f) IO.Path.GetFileNameWithoutExtension(f)))

ListBox3.Items.AddRange(files.ToArray)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多