- PR -

JAVAによるCSVファイルの比較について

1
投稿者投稿内容
なつめやし
会議室デビュー日: 2004/06/30
投稿数: 3
投稿日時: 2004-06-30 14:53
2つのCSVファイル(Input.csv Output.csv)を比較してその差異をDiff.csv
 に出力します。
 Input.csvとOutput.csvの形式ですが、以下の通りです。
 ※Diff.csvの形式は、まだ、決まっておりません。
 
  ●Input.csv ← ファイル名称
   Test1,User1,User2,User3,User4
   Test2,User1,User2,User3,User5

  ●Input.csv ← ファイル名称
   Test1,User1,User2,User3,User5
   Test2,User1,User2,User3,User5

  ●Diff.csv ← ファイル名称
   1行目に差異があります。
   Input.csv:Test1,User1,User2,User3,User4
   Input.csv:Test1,User1,User2,User3,User5


 ※比較は、各csvファイルの行単位で比較し、差異があればDiff.csvに出力
  する方向で考えております。

  何か、サンプル等あれば、ご教授頂けますと幸いで御座います。
  どうかよろしくお願い致します。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-06-30 15:01
 多分、下記と同じ方ですよね・・・。
http://www.vc-net.ne.jp/~ytp/bbs/java/bbs20197.html

 比較対照のCSVを行単位で読み込んで、
行単位で比較し、不一致があったら、
ファイルに出力してやるだけじゃないんでしょうか?
どこがわからないんですか?
JavaのIOですか?
文字列の比較ですか?
あいつー
ベテラン
会議室デビュー日: 2004/05/20
投稿数: 89
投稿日時: 2004-06-30 15:29
takuさんの仰られる通り、何が分らないのかが分りません。
元の投稿だけ見ると、単なる報告(これからこういうものを作ります)ですし、
更に穿った見方をすれば自分ではコーディングするつもりが無く、
ただ単に他人に丸投げしているようにも見えてしまいます。

JavaのIOに関して言えばJakartaのCommons-ioがありますし、
# URL: http://jakarta.apache.org/commons/io/
# 基礎が分っていないのならこういうものを単に使うのでは不味いと思いますが
行で区切るならsplit、行の一致を見るならばeqaulsが使えると思います。

まみこさんは何処がどの様な理由で分らないのですか?
# ただ単なる報告ならば「そうですか〜」で終わりますが。。。
すなめり
常連さん
会議室デビュー日: 2003/01/29
投稿数: 37
お住まい・勤務地: 横浜
投稿日時: 2004-06-30 15:57
単に先頭から順番に比較して差分出すだけだったら難しくも何とも無い筈なので置いておくとして。

難しいとしたら、例えば
inputが
AAA
BBB
CCC

outputが
AAA
CCC

で、差分を
削除:BBB
みたいな感じで出す場合でしょうか。

(単純比較なら
変更:BBB CCC
追加:CCC
になりますよね?)

こちらだとすると、googleで 「diff アルゴリズム」で検索をかけるといくつか出てきます。
私もちょっと読んでみたのですが、理解できませんでした。
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2004-06-30 16:17
diff 相当の機能までを考えているのかはわかりませんが、もしそうなら Hirschberg のアルゴリズムや Hunt-Szymanski のアルゴリズムが使えます。

これらの人名ないし longest common sequence (LCS) で検索してみると幸せになれるかもしれません
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-06-30 16:56
Apacheライセンスのソフトウェアを使えるなら、
JRCSという、JavaでRCS/CVSおよびDiffを扱うライブラリがありますよ。
http://www.suigeneris.org/space/JRCS

# 追記
Downloadしようとしてみたら、404エラーになってしまった。あれ?
Jakarta Commonsのページに行ってみたら、JRCSのページがなくなってる。あれ?

[ メッセージ編集済み 編集者: Wata 編集日時 2004-06-30 17:11 ]
前川
常連さん
会議室デビュー日: 2004/04/27
投稿数: 38
お住まい・勤務地: 1DK
投稿日時: 2004-06-30 17:52
JRCS、どうなったんでしょう?Sandboxの段階でボツになったとかでしょうか。
とりあえずJRCSに探りを入れていたら「manholeのおきらくごくらく日記」という所でこんなのを見つけました↓
引用:
これで、私が知ってるJavaでのDiff実装が1つ増えました。(他にご存じの方の情報を求む)
Commons JRCS JRCS - A RCS Archive Parser in Java
http://www.darwinsys.com/freeware/Diff.java
http://www.bmsi.com/java/Diff.java GNU DiffのJava移植

1

スキルアップ/キャリアアップ(JOB@IT)