我是一名新手程序员,在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
答案 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类的内容来解析文件