2つのテキストファイル比較
機能概要
本ソフトは、2つのテキストファイルを比較して、その差分を表示します。
テキスト差分ライブラリ(C++用非公開版)を使用しています。
シンプルなものですが、基本的な差分を作成できます。
特徴
- コマンドラインインターフェースなので、バッチプログラムから利用可能です。
- C++で記述されていますので、高速に動作します。
- Win32アプリケーションの為、レジストリ不要で動作します。
主な機能
- 差分出力機能
2つのテキストファイルを読み込み解析し、結果を差分文字列としてファイルに出力します。
制限事項
- 差分解析ファイルサイズ
ファイルの内容をメモリー展開しているため、比較できるファイルサイズは、実機に依存します。 - 文字コード
現バージョンでは、日本語Shift-JISのみに対応しています。(他のコードでも比較はできますが、結果は文字化けします)
使用例
アーカイブを展開したら、 run_d001.batを実行して下さい。
すると、test_d001.txt とtest_d002.txtを比較して、test_out.txtというファイルが作成されます。
以下にファイルの内容をしまします。
test_d001.txtの内容
0000000000_001 0000000000_002 0000000000_003 0000000000_004 0000000000_005 0000000000_006 0000000000_007 0000000000_008 0000000000_009 0000000000_010 0000000000_011 0000000000_012 0000000000_013 0000000000_015 0000000000_016 0000000000_017 0000000000_018 0000000000_019 0000000000_020 0000000000_021 0000000000_022 0000000000_023 0000000000_024 0000000000_025 0000000000_026 0000000000_027 0000000000_028 0000000000_029 0000000000_030 0000000000_031 0000000000_032 0000000000_033 0000000000_034 0000000000_035 0000000000_036 0000000000_037 0000000000_038 0000000000_039 0000000000_040
test_d002.txtの内容
0000000000_001 0000000000_002 0000000000_003 0000000000_004 0000000000_005 0000000000_006 0000000001_007 0000000000_008 0000000000_009 0000000000_010 0000000000_011 0000000000_012 0000000000_013 0000000001_014 0000000000_015 0000000000_016 0000000000_017 0000000000_018 0000000000_019 0000000000_020 0000000000_030 0000000000_031 0000000000_032 0000000000_033 0000000000_034 0000000000_035 0000000000_036 0000000000_037 0000000000_038 0000000000_039 0000000000_040
test_out.txtの内容
d7 <,DEL,0000000000_007 a7 >,ADD,0000000001_007 a15 >,ADD,0000000001_014 d22 <,DEL,0000000000_021 d23 <,DEL, d24 <,DEL,0000000000_022 d25 <,DEL,0000000000_023 d26 <,DEL,0000000000_024 d27 <,DEL,0000000000_025 d28 <,DEL,0000000000_026 d29 <,DEL,0000000000_027 d30 <,DEL,0000000000_028 d31 <,DEL, d32 <,DEL,0000000000_029 d33 <,DEL, a23 >,ADD, a24 >,ADD,
多くの機能はありませんが、上記のように差分情報を出力することができます。
また、このソフトが気に入って、さらにもう少しの動作を期待する場合は、
テキスト差分ライブラリ(YsTxBLIB)、を使用してみるのもいいかと思います。
参考までに、このアプリケーションのソースの一部を示します。
ここで使用している、テキスト差分ライブラリ(C++用非公開版)が非公開の理由は、
クラスライブラリは、コンパイラーに依存するので、配布が複雑になるのを避けるためです。
カスタマイズ対応であれば、配布するのは可能だと思います。。
YsTxCDiff.exeの差分処理のソース(抜粋)
//ファイル配列 vector < string > srcfl_ary; // 比較元配列(source) vector < string > dstfl_ary; // 比較先配列(dist) vector < vector < string > > dfList2; // 比較結果配列 vector < string > fmtList; // 書式化配列 TxDiff *pTdiff; // TxDiff クラス pTdiff = new TxDiff; // TxDiff クラス生成 pTdiff->Open(DEF_DIF_DIF); // TxDiffクラスオープン DEF_DIF_DIF=差分を生成 //差分出力モード 差分(追加/削除/変更) // ソースファイルを配列に読み読む pTdiff->ReadFile(szSrcFname, &srcfl_ary); // ディストファイルを配列に読み読む pTdiff->ReadFile(szDstFname, &dstfl_ary); // 差分情報作成 dfList2 = pTdiff->GetDiffStr(&srcfl_ary, &dstfl_ary); long list_len = dfList2.size(); //配列数 // 差分情報書式化 fmtList = pTdiff->FmtDiffList(DEF_DIF_FMT_1, &dfList2); //DEF_DIF_FMT_1=オリジナル形式 long fmt_len = fmtList.size(); //配列数 // 配列の内容を出力ファイルに書き込む pTdiff->WriteFile(szOutFname, &fmtList); pTdiff->Close(); // TxDiff クラスクローズ delete pTdiff; // TxDiff クラス消滅