如何将java文件内容进行比较

如何将java文件内容进行比较,第1张

比较文件的MD5即可

import java.io.File

import java.io.FileInputStream

import java.math.BigInteger

import java.security.MessageDigest

import java.util.HashMap

import java.util.Map

public class FileDigest {

/**

* 获取单个文件的MD5值!

* @param file

* @return

*/

public static String getFileMD5(File file) {

if (!file.isFile()){

return null

}

MessageDigest digest = null

FileInputStream in=null

byte buffer[] = new byte[1024]

int len

try {

digest = MessageDigest.getInstance("MD5")

in = new FileInputStream(file)

while ((len = in.read(buffer, 0, 1024)) != -1) {

digest.update(buffer, 0, len)

}

in.close()

} catch (Exception e) {

e.printStackTrace()

return null

}

BigInteger bigInt = new BigInteger(1, digest.digest())

return bigInt.toString(16)

}

/**

* 获取文件夹中文件的MD5值

* @param file

* @param listChild true递归子目录中的文件

* @return

*/

public static Map<String, String>getDirMD5(File file,boolean listChild) {

if(!file.isDirectory()){

return null

}

//<filepath,md5>

Map<String, String>map=new HashMap<String, String>()

String md5

File files[]=file.listFiles()

for(int i=0i<files.lengthi++){

File f=files[i]

if(f.isDirectory()&&listChild){

map.putAll(getDirMD5(f, listChild))

} else {

md5=getFileMD5(f)

if(md5!=null){

map.put(f.getPath(), md5)

}

}

}

return map

}

public static void main(String[] args) {

File file1 = new File("a.txt")

File file2 = new File("b.txt")

System.out.println(getFileMD5(file1).equals(getFileMD5(file2)))

}

}

1)程序运行开始的时候,提示输出两个文件的路径

2)程序一行一行比较,当其中有一行不一样的时候,提示文件内容不同的行数以及内容;

3)如果文件内容一样,提示用户内容一样。

package buffered

import java.io.*

import java.lang.String

import java.util.Scanner

public class BufferedTest

{

public static void main(String[] args){

try{Scanner readr=new Scanner(System.in)<br/>System.out.println("输入第一个文件的路径及文件名:")<br/>String file1=readr.next()<br/>System.out.println("输入第二个文件的路径及文件名:")<br/>String file2=readr.next()<br/>FileReader inOne1=new FileReader(file1)<br/>BufferedReader inTwo1=new BufferedReader(inOne1)<br/>String s1=null<br/>int i=0//行数 <br/>boolean b=true//检察是行数 <br/>FileReader inOne2=new FileReader(file2)<br/>BufferedReader inTwo2=new BufferedReader(inOne2)<br/>String s2=null<br/>//文件内容对比 <br/>while((s1=inTwo1.readLine())!=null){ <br/>i++<br/>while((s2=inTwo2.readLine())!=null){ <br/><br/>if(s1.equals(s2)!=true){ <br/>System.out.println("第"+i+"行:"+s1+"和"+s2+"内容不一样")<br/>b=false<br/>}

break

}

}

if(b){System.out.println("文件内容一样")}

}

catch(IOException e){

System.out.println(e)

}

}

}

计算MD5或SHA-1,一样的就是同一个文件

下面的代码,不需要额外使用第三方组件,且支持超大文件

// 计算文件的 MD5 值

publicstatic String getFileMD5(File file) {

    if (!file.isFile()) {

        return null

    }

    MessageDigest digest = null

    FileInputStream in = null

    byte buffer[] = newbyte[8192]

    int len

    try {

        digest =MessageDigest.getInstance("MD5")

        in = new FileInputStream(file)

        while ((len = in.read(buffer)) != -1) {

            digest.update(buffer, 0, len)

        }

        BigInteger bigInt = new BigInteger(1, digest.digest())

        return bigInt.toString(16)

    } catch (Exception e) {

        e.printStackTrace()

        return null

    } finally {

        try {

            in.close()

        } catch (Exception e) {

            e.printStackTrace()

        }

    }

 

} // 计算文件的 SHA-1 值

publicstatic String getFileSha1(File file) {

    if (!file.isFile()) {

        return null

    }

    MessageDigest digest = null

    FileInputStream in = null

    byte buffer[] = newbyte[8192]

    int len

    try {

        digest =MessageDigest.getInstance("SHA-1")

        in = new FileInputStream(file)

        while ((len = in.read(buffer)) != -1) {

            digest.update(buffer, 0, len)

        }

        BigInteger bigInt = new BigInteger(1, digest.digest())

        return bigInt.toString(16)

    } catch (Exception e) {

        e.printStackTrace()

        return null

    } finally {

        try {

            in.close()

        } catch (Exception e) {

            e.printStackTrace()

        }

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11516962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存