当前位置: 移动技术网 > IT编程>开发语言>Java > Java编程实现比对两个文本文件并标记相同与不同之处的方法

Java编程实现比对两个文本文件并标记相同与不同之处的方法

2019年07月19日  | 移动技术网IT编程  | 我要评论

本文实例讲述了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程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网