Java编程实现比对两个文本文件并标记相同与不同之处的方法
程序员文章站
2024-02-26 16:49:16
本文实例讲述了java编程实现比对两个文本文件并标记相同与不同之处的方法。分享给大家供大家参考,具体如下:
使用需求:
文件1里面是需要比较的内容,文件2是被比较的文本...
本文实例讲述了java编程实现比对两个文本文件并标记相同与不同之处的方法。分享给大家供大家参考,具体如下:
使用需求:
文件1里面是需要比较的内容,文件2是被比较的文本,现在需要找到在文件1中每一行的文本在文件2中是否存在并相等,如果相等,就在一份结果文件中输出,文件1的哪一行与文件2的哪一行相同,反之不相同就输出文件1的哪一行不相同货不存在。
java代码如下,输出的是result.txt文件,这个文件的行号和文件1保持一致,所以result中某一行的结果就是对应的文件1中这行数据在文件2中比较之后的结果。
(需要注意文件1和文件2是通过每一行的内容进行比较)
最后为了方便查看可以通过notepad++查看:
package com.it.aron; import java.io.bufferedreader; import java.io.bufferedwriter; import java.io.file; import java.io.filenotfoundexception; import java.io.filereader; import java.io.filewriter; import java.io.ioexception; /** * check repetitive text * @author: aronxu * @version: 1.0, sep 22, 2015 */ public class autochecktext { private static final string file_path = "d:/text1.txt"; private static final string compared_file_path = "d:/text2.txt"; private static final string result_file_path = "d:/result.txt"; public static void main(string[] args) { system.out.println("======start search!======="); long starttime = system.currenttimemillis(); // read first file file file = new file(file_path); file comparedfile = new file(compared_file_path); bufferedreader br = null; bufferedreader cbr = null; bufferedwriter rbw = null; try { br = new bufferedreader(new filereader(file)); cbr = new bufferedreader(new filereader(comparedfile)); cbr.mark(90000000); rbw = new bufferedwriter(new filewriter(result_file_path)); string linetext = null; while ((linetext = br.readline()) != null) { string searchtext = linetext.trim(); searchandsignprocess(searchtext, cbr, rbw); } long endtime = system.currenttimemillis(); system.out.println("======process over!======="); system.out.println("time spending:" + ((endtime - starttime) / 1000d) + "s"); } catch (filenotfoundexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } finally { if (br != null) { try { br.close(); } catch (ioexception e) { e.printstacktrace(); } finally { if (cbr != null && rbw != null) { try { cbr.close(); rbw.close(); } catch (ioexception e) { e.printstacktrace(); } } } } } } public static void searchandsignprocess(string searchtext, bufferedreader comparedreader, bufferedwriter rbw) throws ioexception { string linestr = "-\n"; if (searchtext == null) { return; } if ("".equals(searchtext)) { rbw.write(linestr); return; } string linetext = null; int linenum = 1; while ((linetext = comparedreader.readline()) != null) { string comparedline = linetext.trim(); if (searchtext.equals(comparedline)) { linestr = "###=equal:" + linenum + "=###\n"; break; } linenum++; } rbw.write(linestr); comparedreader.reset(); } }
text1.txt内容:
myaccount.msg.register.register=registro personas myaccount.msg.register.your_company=¿eres empresa? myaccount.msg.register.sign_up=registrate aquí myaccount.msg.register.fields_compellent=todos los campos son obligatorios myaccount.msg.register.account_data=datos de la cuenta myaccount.msg.register.email=e-mail: myaccount.msg.register.confirm_email=confirma tu e-mail: myaccount.msg.register.password=contraseña: myaccount.msg.register.confirm_password=confirma tu contraseña: myaccount.msg.register.personal_data=datos personales myaccount.msg.register.first_name=nombre: myaccount.msg.register.last_name=apellido paterno: myaccount.msg.register.middle_name=apellido materno: myaccount.msg.register.country=país de residencia: myaccount.msg.register.id_card=cédula de identidad: myaccount.msg.register.genero=género: myaccount.msg.register.male=masculino: myaccount.msg.register.female=femenino: myaccount.msg.register.birth=fecha de nacimiento: myaccount.msg.register.day=día myaccount.msg.register.month=mes
text2.txt内容:
myaccount.msg.register.country=país de residencia: myaccount.msg.register.confirm_password=confirma tu contraseña: myaccount.msg.register.last_name=apellido paterno: myaccount.msg.register.middle_name=apellido materno: myaccount.msg.register.id_card=cédula de identidad: myaccount.msg.register.genero=género: myaccount.msg.register.male=masculino: myaccount.msg.register.female=femenino: myaccount.msg.register.personal_data=datos personales myaccount.msg.register.first_name=nombre:
result.txt内容:
- - - - - - - - - ###=equal:2=### ###=equal:12=### ###=equal:13=### - ###=equal:4=### ###=equal:5=### ###=equal:1=### ###=equal:7=### - ###=equal:9=### ###=equal:10=### ###=equal:11=### - - -
更多关于java算法相关内容感兴趣的读者可查看本站专题:《java文件与目录操作技巧汇总》、《java数据结构与算法教程》、《java操作dom节点技巧总结》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。