ファイル差分出力(C#/VB.NET)
2010年02月02日
2つのテキストファイルの差分をCSV出力するサンプル(ソース/コード)です。NonDiffNet.dll を使っています。
' --------------------------------------------------------
' ファイル差分をCSV出力するサンプル(VB.NET/VS2005)
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
Dim f1 As String = "D:\Temp\Test01.txt"
Dim f2 As String = "D:\Temp\Test02.txt"
Dim f3 As String = "D:\Temp\Test03.csv"
' ファイル差分をCSV出力
Dim fdf As String(,) = FileDiff(f1, f2)
' CSVファイルオープン
Dim sw As IO.StreamWriter = _
New IO.StreamWriter(f3, False, _
System.Text.Encoding.GetEncoding("SHIFT-JIS"))
For i As Integer = 1 To fdf.GetLength(1) - 1
If fdf(0, i) <> "" Then ' 差分のみ出力
Dim line As String = _
fdf(0, i) & "," & _
fdf(1, i) & "," & _
fdf(2, i) & "," & _
fdf(3, i) & "," & _
fdf(4, i)
' CSVファイル出力
sw.WriteLine(line)
End If
Next
' CSVファイルクローズ
sw.Close()
End Sub
' ファイルを比較し結果を返します
' NonDiffNet.dllを参照設定しています。
Private Function FileDiff( _
ByVal f1 As String, ByVal f2 As String) As String(,)
' ファイル読込
Dim sr1 As IO.StreamReader = _
New IO.StreamReader(f1, _
System.Text.Encoding.GetEncoding("SHIFT-JIS"))
Dim sr2 As IO.StreamReader = _
New IO.StreamReader(f2, _
System.Text.Encoding.GetEncoding("SHIFT-JIS"))
Dim dt1 As String = sr1.ReadToEnd()
Dim dt2 As String = sr2.ReadToEnd()
sr1.Close()
sr2.Close()
' ファイルの比較
Dim NonDiff As New NonDiffNet.NonDiffClass()
Return NonDiff.NonDiff( _
dt1, dt2, False, 2, 1, 1, "file0", "file1")
End Function
' --------------------------------------------------------
// -------------------------------------------------------
// ファイル差分をCSV出力するサンプル(C#.NET/VS2005)
private void button1_Click(object sender, EventArgs e)
{
String f1 = @"D:\Temp\Test01.txt";
String f2 = @"D:\Temp\Test02.txt";
String f3 = @"D:\Temp\Test03.csv";
// ファイル差分をCSV出力
String[,] fdf = FileDiff(f1, f2);
// CSVファイルオープン
System.IO.StreamWriter sw =
new System.IO.StreamWriter(f3, false,
System.Text.Encoding.GetEncoding("SHIFT-JIS"));
for (int i = 1; i <= fdf.GetLength(1) - 1; i++)
{
if (fdf[0, i] != "") // 差分のみ出力
{
String line =
fdf[0, i] + "," +
fdf[1, i] + "," +
fdf[2, i] + "," +
fdf[3, i] + "," +
fdf[4, i];
// CSVファイル出力
sw.WriteLine(line);
}
}
// CSVファイルクローズ
sw.Close();
}
// ファイルを比較し結果を返します
// NonDiffNet.dllを参照設定しています。
private String[,] FileDiff(String f1, String f2)
{
// ファイル読込
System.IO.StreamReader sr1 =
new System.IO.StreamReader(f1,
System.Text.Encoding.GetEncoding("SHIFT-JIS"));
System.IO.StreamReader sr2 =
new System.IO.StreamReader(f2,
System.Text.Encoding.GetEncoding("SHIFT-JIS"));
String dt1 = sr1.ReadToEnd();
String dt2 = sr2.ReadToEnd();
sr1.Close();
sr2.Close();
// ファイルの比較
NonDiffNet.NonDiffClass NonDiff =
new NonDiffNet.NonDiffClass();
return NonDiff.NonDiff(
dt1, dt2, false, 2, 1, 1, "file0", "file1");
}
// -------------------------------------------------------