首页 > 解决方案 > VB.net 检查某个文件夹中是否有 .xml 文件(循环中)并单独处理它们

问题描述

我有一个文件夹,软件在其中生成随机 XML 数据文件和几张扫描图像(链接在 .xml 中)。我需要根据 .xml 中的数据对这些图像进行排序。唯一的问题是 .xml 文件具有随机名称。我只是想不出一种方法来检查该特定文件夹中是否有没有文件名的 xml 文件。而且我需要一个循环运行的代码,直到我按下停止按钮。

我试图制作一个开始按钮“ Button3”,点击它会触发检查机制,但这需要用户在每个周期后输入。所以我想要一个循环循环并执行此操作,直到我按下结束按钮“ Button4”。File.Exists()函数似乎不适用于通配符 (*.xml) 名称。

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles   Button3.Click
    If (TextBox1.Text = "") Then
        MsgBox("Please select xml folder")
    ElseIf (TextBox2.Text = "") Then
        MsgBox("Please select target folder")
    Else
        RichTextBox1.Text = "Process started..."
        Dim SourcePath = TextBox1.Text
        If System.IO.File.Exists(SourcePath+"/*.xml") Then
            RichTextBox1.AppendText(Environment.NewLine + "Found one xml data, processing it now.. ")
            RichTextBox1.ScrollToCaret()
            RichTextBox1.ReadOnly = True
        Else
            RichTextBox1.AppendText(Environment.NewLine + "No xml data found, looping ... ")
            RichTextBox1.ScrollToCaret()
            RichTextBox1.ReadOnly = True
        End If


    End If



End Sub

虽然当我将 *.xml 替换为 test.xml 并通过按开始按钮触发检查时代码有效,但我无法使用 goto 运行稳定的循环,并且由于文件名不是恒定的,因此无论如何都不可行。

PS:TextBox1&TextBox2是具有每个源和目标文件夹名称的 OpenFileDialogs。RichTextBox1是嵌入式日志。

标签: xmlvb.net

解决方案


使用DirectoryInfo获取文件

var di = new DirectoryInfo("C:\\temp"); //use your path

foreach(var file in di.GetFiles("*.xml"))
{
    //do your work.
}

使用FileSystemWatcher监视文件并在更改时触发事件


推荐阅读