我試圖在Java中進行文件比較。 如何搜索字符串中的下發生的歷史行(忽略空格)Java - 文件比較;在下一個並行行中搜索字符串(忽略空白)
如:
與我的邏輯**File1** **File2** <name>abc</name> | <name>abc</name> Equal <age>21</age> | Not Equal <company>zyz</company> | <age>21</age> Not Equal | <company>zyz</company> Not Equal
目前,我已經與CSV
字符串<name>abc</name>, <age>21</age>, <company>zyz</company>, ####Start of target File####, <name>abc</name>, , <age>21</age>, <company>zyz</company>
問題: 在CSV的第二行中,年齡值爲空白。當我的程序檢查File1中的第二行和File2中的第二行時,它們不相等,因此它也會給相應的行賦予錯誤。
需要做什麼:我必須忽略空格並檢查下一個出現的值,如果兩者相等,則將file1的第二行向下移動。
輸出必須是這樣的
**File1** **File2** <name>abc</name> | <name>abc</name> | <age>21</age> | <age>21</age> <company>zyz</company> | <company>zyz</company>
這裏是我到目前爲止已經試過
public List<String> FileCompare(String source, String target) {
try {
//String source="D:/reference.xml";
//String target="D:/comparison.xml";
//Diff d=new Diff(myControlXML, myTestXML);
FileReader fr = new FileReader(source);
FileReader fr1 = new FileReader(target);
BufferedReader br = new BufferedReader(fr);
BufferedReader br2 = new BufferedReader(fr1);
String s1,s2;
String st= new String();
String st2= new String();
while((s1 = br.readLine()) != null) {
myList.add(s1);
st=st.concat(s1);
//System.out.println(s1);
}
Collections.addAll(myList, "#########Start of target#########");
while((s2 = br2.readLine())!=null){
st2=st2.concat(s2);
myList1.add(s2);
}
myList.addAll(myList1);
System.out.println(myList);
//System.out.println(myList1);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return myList;
}
這裏是主代碼
Compare c=new Compare();
//FileCompare returns CSV string
List<String> s=c.FileCompare("D:/reference.xml", "D:/comparison.xml");
String pdf=s.toString();
String[] tokens=pdf.split(",");
for(String token:tokens)
System.out.println(token);
如何我是否會這樣做忽略空白?請幫忙
很多謝謝!
你如何將其轉換爲CSV?你有沒有考慮過像SAX和DOM這樣的解析器?你想通過比較來實現什麼? –
@DuniyaHilaDalunga - 這裏是更新後的帖子,我如何將它轉換爲CSV – shockwave