(There are some diff libraries written in Java, but in this case, I use JRCS diff library.)
Java Diff Library References
- JRCS Home
http://www.suigeneris.org/kb/display/jrcs/JRCS+Home - Other Diff Libraries written in Java
http://www.incava.org/projects/java/ - Diff Libraries written in JavaScript
http://ejohn.org/projects/javascript-diff-algorithm/ - Other References
- http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=JRCS
- Wikipedia Diff
http://ja.wikipedia.org/wiki/Diff
- Download the latest JRCS Library jar file.
http://www.suigeneris.org/kb/display/jrcs/JRCS+Home#JRCSHome-Downlodables - Unzip the latest zip file
- get org.suigeneris.jrcs.diff-(version number).jar file from unzipped files.
Sample Program
- Import classes
import org.suigeneris.jrcs.diff.simple.SimpleDiff;
import org.suigeneris.jrcs.diff.DiffAlgorithm;
import org.suigeneris.jrcs.diff.Diff;
import org.suigeneris.jrcs.diff.Revision;
import org.suigeneris.jrcs.diff.delta.Delta;
import org.suigeneris.jrcs.diff.delta.Chunk;
import org.suigeneris.jrcs.diff.DifferentiationFailedException;
import org.suigeneris.jrcs.util.ToString; - Program
public void DiffTest(){
try{
//Initializing diff algorithm, in this sample, use SimpleDiff Algorithm
DiffAlgorithm algorithm=new SimpleDiff();
//Create 2 arrays to output sample difference
String[] origs=new String[]{"one","two","three","four","five"};
String[] revised=new String[]{"two","four"};
//Create new Diff Object
//first argument is original array, second argument is algorithm object.
Diff difference=new Diff(origs,algorithm);
//Call diff() method for Diff Object with new array you want to get difference between original
Revision rev=difference.diff(revised);
//Output difference between original and revised arrays to use Revision's toString()
System.out.println(rev.toString());
/*
Sample output of revision's toString()
1d0
< one
3d1
< three
5d2
< five
*/
System.out.println(rev.toRCSString());
/*
Sample Output of revision's toRCSString()
d1 1
d3 1
d5 1
*/
//get all positions and information existing the difference
System.out.println("**********Diff Delta**********");
for(int i=0;i<rev.size();i++){
Delta delta=rev.getDelta(i);
Chunk origChunk=delta.getOriginal();
Chunk revisedChunk=delta.getRevised();
System.out.println("delta="+delta.toString());
System.out.println("orig range ="+origChunk.rangeString());
System.out.println("revised range="+revisedChunk.rangeString());
}
/*
Sample Output of delta
**********Diff Delta**********
delta=1d0
< one
orig range =0
revised range=0
delta=3d1
< three
orig range =2
revised range=1
delta=5d2
< five
orig range =4
revised range=2
*/
}catch(DifferentiationFailedException eDifferentiationFailed){
//sometimes throw Exception in Diff.diff() method
System.out.println("Exception occured, pos:1, e="+eDifferentiationFailed);
}
}
0 件のコメント:
コメントを投稿