新しいファイルにマージされる 2 つ以上のログ ファイルがあります。
ログファイルの形式は次のようになります
Dir1 File1Path1 File1Path2 Timestamp tempfileName
Dir1 File2Path1 File2Path2 Timestamp tempfileName
Dir2 File1Path1 File1Path2 Timestamp tempfileName`
Dir3 File1Path1 File1Path2 Timestamp tempfileName
Dir3 File2Path1 File2Path2 Timestamp tempfileName
Dir3 File1Path1 File1Path2 Timestamp tempfileName
Dir4 File1Path1 File1Path2 Timestamp tempfileName`
等
私の要件は次のとおりです。
- 各ログ ファイルの各行の形式が正しいことを確認します。つまり、すべての値が記録されます。
- 重複がないことを確認する
- ファイルが正しくマージされていること、つまり、各ログ ファイルのすべてのログ行が新しいログ ファイルにマージされていることを確認します。
- 新しいマージされたファイルをベースライン ファイルと比較する
1 のコードは既に記述しています。ファイルを読み取り、その内容を行/列ごとにデータセットにロードします。
data.Tables[tableName].Columns.Add("Dir");
data.Tables[tableName].Columns.Add("Path1");
data.Tables[tableName].Columns.Add("Path2");
using (StreamReader reader = new StreamReader(log))
{
string line = string.Empty;
while ((line = reader.ReadLine()) != null)
{
data.Tables[tableName].Rows.Add(line.Split(new string[] { "\t" }, data.Tables[tableName].Columns.Count, StringSplitOptions.RemoveEmptyEntries));
}
}
しかし、残りのタスクを完了するには、行をデータセットにロードすることが正しいかどうかわかりません。これに対する最速でより良いアプローチは何ですか? 各行の値をループして残りと比較することはできますが、高速になるとは思いません。ログ ファイルのサイズは 20 ~ 45MB です。
マージされたログの内容は次のようになります (行の順序は任意です)
Dir1 File1Path1 File1Path2 Timestamp tempfileName
Dir1 File2Path1 File2Path2 Timestamp tempfileName
Dir2 File1Path1 File1Path2 Timestamp tempfileName
Dir4 File1Path1 File1Path2 Timestamp tempfileName
Dir3 File1Path1 File1Path2 Timestamp tempfileName
Dir3 File2Path1 File2Path2 Timestamp tempfileName
Dir3 File1Path1 File1Path2 Timestamp tempfileName
ご覧いただきありがとうございます。