搜索文件扩展名VB.NET [英] Searching By File Extensions VB.NET

查看:181
本文介绍了搜索文件扩展名VB.NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试搜索指定的目录和所有子目录的所有文件,具有指定的文件扩展名。但是,如果您无法访问目录,则内置命令将无效,因为错误命令会死机。所以这里是我现在有的:

 私有函数dirSearch(ByVal path As String,可选ByVal searchpattern As String =。 exe)As String()
Dim di As New DirectoryInfo(path)
Dim fi As FileInfo
Dim filelist()As String
Dim i As Integer = 0
对于每个fi在di.GetFiles
如果System.IO.Path.GetExtension(fi.FullName).ToLower = searchpattern然后
filelist(i)= fi.FullName
i + = 1
结束如果
下一个
返回文件列表
结束函数

但是我得到一个System.NullReferenceException:对象引用未设置为对象的实例。当我尝试访问存储在文件列表字符串数组中的数据。



任何想法在什么im做错了?

Dim filelist()As String 数组。尝试 di.GetFiles(searchPattern)

  Dim files()as FileInfo = di.GetFiles(searchPattern)

使用返回数组字符串的静态方法Directory.GetFiles

  Dim files = Directory.GetFiles(Path,searchPattern,searchOption)

演示:

  Dim files()As String 
files = Directory.GetFiles(path,* .exe,SearchOption.TopDirectoryOnly)
对于每个FileName As String在文件
Console.WriteLine(FileName)
下一个
  Sub Main()
Dim path =c:\jam
Dim fileList As New List(Of String)

GetAllAccessibleFiles(path,fileList)

'转换列表< T>如果你想要
Dim files As String()= fileList.ToArray

对于每个s as String在fileList
Console.WriteLine(s)
下一个
End Sub

Sub GetAllAccessibleFiles(path As String,filelist As List(Of String))
对于每个文件As String在Directory.GetFiles(path,*。* )
filelist.Add(file)
下一个
对于每个dir As String在Directory.GetDirectories(路径)
尝试
GetAllAccessibleFiles(dir,filelist)
Catch ex As Exception

结束尝试
下一个
End Sub


Hi all i have been trying to search a specified directory and all sub directories for all files that have the specified file extension. However the inbuilt command is useless as it errors up and dies if you dont have access to a directory. So here's what i have at the moment:

 Private Function dirSearch(ByVal path As String, Optional ByVal searchpattern As String = ".exe") As String()
    Dim di As New DirectoryInfo(path)
    Dim fi As FileInfo
    Dim filelist() As String
    Dim i As Integer = 0
    For Each fi In di.GetFiles
        If System.IO.Path.GetExtension(fi.FullName).ToLower = searchpattern Then
            filelist(i) = fi.FullName
            i += 1
        End If
    Next
    Return filelist
 End Function

However i get an "System.NullReferenceException: Object reference not set to an instance of an object." when i try to access the data stored inside the filelist string array.

Any idea's on what im doing wrong?

解决方案

You didn't instantiate the Dim filelist() As String array. Try di.GetFiles(searchPattern)

Dim files() as FileInfo = di.GetFiles(searchPattern)

Use static method Directory.GetFiles that returns an array string

Dim files =  Directory.GetFiles(Path,searchPattern,searchOption)

Demo:

 Dim files() As String
 files = Directory.GetFiles(path, "*.exe", SearchOption.TopDirectoryOnly)
 For Each FileName As String In files
     Console.WriteLine(FileName)
 Next

Recursive directory traversal:

   Sub Main()
        Dim path = "c:\jam"
        Dim fileList As New List(Of String)

        GetAllAccessibleFiles(path, fileList)

        'Convert List<T> to string array if you want
        Dim files As String() = fileList.ToArray

        For Each s As String In fileList
            Console.WriteLine(s)
        Next
    End Sub

    Sub GetAllAccessibleFiles(path As String, filelist As List(Of String))
        For Each file As String In Directory.GetFiles(path, "*.*")
            filelist.Add(file)
        Next
        For Each dir As String In Directory.GetDirectories(path)
            Try
                GetAllAccessibleFiles(dir, filelist)
            Catch ex As Exception

            End Try
        Next
    End Sub

这篇关于搜索文件扩展名VB.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆