如何重命名包含特定文本字符串的文件?

时间:2012-12-20 19:44:58

标签: xml windows vb.net foreach rename

我是一名新手程序员,在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

1 个答案:

答案 0 :(得分: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类的内容来解析文件