1

VS2010 の VB で最初のアプリケーションを書いている初心者プログラマーです。複数の XML ファイルを含むディレクトリを操作しています。ファイル拡張子を .xml から .txt に変換するコードを書きましたが、これは私のアプリの意図ですが、このコードを実行する条件を指定する方法がわかりません。私が本当に達成しようとしているのは、アプリケーションがディレクトリ全体をループし、xmlノードの1つに「TEST FILE」などの特定のテキスト文字列を含むxmlファイルのみのファイル拡張子を変更することです。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 に答える