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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将java文件内容进行比较相关的知识,希望对你有一定的参考价值。

比较文件的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=0;i<files.length;i++)
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)));


参考技术A 进行反编译之后应该可以比较

Java如何重复排序直到在冒泡排序中没有进行交换?

【中文标题】Java如何重复排序直到在冒泡排序中没有进行交换?【英文标题】:Java How do i repeat sort until no swaps are done in bubblesort? 【发布时间】:2022-01-20 23:09:57 【问题描述】:

我将选取 10 个元素并对它们进行冒泡排序。我想添加一个重复排序的算法,直到不需要交换以提高效率。 基本上我想:

重复直到没有完成一次交换 对于元素 1 到 (n-1) 将元素值 1 的内容与下一个值的内容进行比较 如果值 1 大于值 2 然后交换值

这是我到目前为止所做的:

    

        //create array
        int[] iList = new int[10];
        Scanner sc = new Scanner(System.in);

        //takes in array input for 10 numbers
        
        System.out.println("Enter a array of numbers ");

        
        for(int i = 0; i< 10; i++ ) 
        
            int num = i + 1;
            System.out.println("Enter number " + num);
            iList[i] = sc.nextInt();
            
        

        //Bubble sorts the array
        
        System.out.println("The array =");

        for(int a = 0; a < iList.length; a++ )
        
          for(int b = a+1; b < iList.length; b++) 
          
                if(iList[a] > iList[b])
                
                    int iTemp = iList[a];
                    iList[a] = iList[b];
                    iList[b] = iTemp;   
                    
                
                  System.out.println("Progress = " + Arrays.toString(iList) );
               
        
        
        
     ```

【问题讨论】:

创建一个bool 来存储它是否曾经在迭代中被交换过。 break 如果没有 在外循环的开头引入了一个boolean变量,在if里面改变那个boolean变量的值,检查这个变量在外循环结束前是否改变了。 【参考方案1】:

这是我的实现:

public static void sort(int[] nums) 
        boolean isSwapped;
        int size = nums.length - 1;

        for (int i = 0; i < size; i++) 
            isSwapped = false;
            for (int j = 0; j < size - i; j++) 
                if (nums[j] > nums[j+1]) 
                    int temp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = temp;
                    isSwapped = true;
                
            
            if (!isSwapped) break;
        

        System.out.println("Sorted Array: " + Arrays.toString(nums));
    

【讨论】:

以上是关于如何将java文件内容进行比较的主要内容,如果未能解决你的问题,请参考以下文章

如何大批量比较class文件

java代码 如何向TXT文件写入内容?

java如何区分上传的文件

如何把PDF文件内容转换成TXT

将2个文件内容与shell脚本中的特定值进行比较

2个大的XML文件怎么比较其中的内容