【问题标题】:vb.net select random folder namevb.net 选择随机文件夹名称
【发布时间】:2013-03-06 14:48:08
【问题描述】:

任何人都知道我如何使用 vb.net 选择现有的随机目录名称(C:\ 驱动器)并将其位置存储在变量中。

我不得不谷歌这个,但似乎只能找到与文件相关的示例,而不是文件夹

【问题讨论】:

  • 如果您仍然没有找到该问题的任何解决方案,您可以使用我测试过的答案。

标签: vb.net random directory


【解决方案1】:

试试这个,希望这能满足你的要求,

'----------------- Global Variables
Dim xCnter = 0
Dim xRndNo = 0
Dim xSubdirectory As String

Private Sub Basement()
     Dim xGenerator As System.Random = New System.Random()
     xRndNo = xGenerator.Next(1, 100)
     AssignRndDirectory("C:\")
     msgbox(subdirectory)
End Sub

Private Sub AssignRndDirectory(xPath as string)
     For Each subdirectory In Directory.GetDirectories(xPath)
        if xCnter = xRndNo then Exit sub
        xCnter += 1
        call AssignRndDirectory(subdirectory)
     Next 
End Sub

[注意:此代码未经IDE测试,如有错误请告诉我。]


编辑: TESTED WITH IDE

 Dim xCnter = 0
   Dim xRndNo = 0
   Dim xSubdirectory As String

   Private Sub Basement()

        Dim xGenerator As System.Random = New System.Random()
        xRndNo = xGenerator.Next(1, 100)
        AssignRndDirectory("C:\")
        MsgBox(xSubdirectory)

        xCnter = 0

    End Sub

    Private Sub AssignRndDirectory(ByVal xPath As String)

        Try

            For Each Subdirectory In Directory.GetDirectories(xPath)

                If xCnter = xRndNo Then Exit Sub
                xSubdirectory = Subdirectory
                xCnter += 1
                Call AssignRndDirectory(Subdirectory)

            Next

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

【讨论】:

    【解决方案2】:

    只需制作一个目录列表,然后从中选择一个随机项目。

    Dim rnd As New Random()
    Dim path As String = "C:\"
    Dim dir = New DirectoryInfo(path)
    Dim subDirs = dir.GetDirectories()
    Dim randomDir = subdirs(rnd.[Next](subDirs.Length))
    

    或者,如果你更喜欢 Linq,最后一行可以是:

    Dim randomDirectory = subdirs.Skip(rnd.[Next](subdirs.Length)).First()
    

    【讨论】:

    • 我假设 OP 希望目录结构中的随机文件不仅在顶级目录中。因此,您必须使用SearchOption.AllDirectories,如果您无权访问(例如在junction points),则会出错。在 C 上尝试一下。
    • 我读到的是how I can select an existing random directory name [from the] C:\ [directory]。也许问题作者可以澄清一下?
    • 我想在C:\目录下随机选择一个文件夹(已经存在)
    • @ABANDONDACOUNT 请澄清您是否要从 (a) 仅根文件夹或 (b) 根文件夹和任何子文件夹中选择此文件夹。
    • 根文件夹和任何子目录
    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多