欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-04-01 17:50:22
本文实例讲述了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程序设计有所帮助。