1

我是一名新手程序员,在 VS2010 中用 VB 编写我的第一个应用程序。我正在处理一个包含多个 XML 文件的目录。我已经编写了一些将文件扩展名从 .xml 转换为 .txt 的代码,这是我的应用程序的意图,但是,我不确定如何指定执行此代码的条件。我真正想要实现的是让我的应用程序循环遍历整个目录,并仅更改那些包含特定文本字符串的 xml 文件的文件扩展名,例如其中一个 xml 节点中的“TEST FILE”。XML 模式都是相同的,文件都相对较小(每个在 2 到 5kb 之间),但在我的目标目录中有数千个。关于如何实现这一点的任何提示/建议?这是我到目前为止的代码。谢谢!

    Dim [option] As SearchOption = SearchOption.AllDirectories
    [option] = SearchOption.AllDirectories
    Dim files As String()
    files = Directory.GetFiles("U:\Primitive_XMLs", "*.xml", [option])
    Dim filepath_new As String
    For Each filepath As String In files

        filepath_new = filepath.Replace(".xml", ".txt")
        System.IO.File.Move(filepath, filepath_new)
    Next
4

1 回答 1

0

如果文件确实很小,并且您不需要指定某个节点(例如,文件中任何位置存在的字符串足以保证移动它),您可以尝试以下操作

    Dim mustContain As String = "TEST FILE"
    Dim files As String() = IO.Directory.GetFiles("U:\Primitive_XMLs", "*.xml", IO.SearchOption.AllDirectories)
    For Each filepath As String In files
        If IO.File.ReadAllText(filepath).Contains(mustContain) Then
            IO.File.Move(filepath, filepath.Replace(".xml", ".txt"))
        End If
    Next

如果您确实需要指定可以找到此字符串的位置(例如,仅在第 3 个节点包含它时才移动文件),那么您将需要使用 xmlreader 类之类的东西来解析文件

于 2012-12-20T20:09:22.043 回答