七叶笔记 » java编程 » java判断文件是否相同的方法

java判断文件是否相同的方法

java判断文件是否相同的方法:

1、计算MD5或SHA-1然后对比判断

 // 计算文件的 MD5 值 根据MD5值 判断文件是否是同一个文件public static String getFileMD5(File file) {        if (!file.isFile()) {            return null;        }        MessageDigest digest = null;        FileInputStream in = null;        byte buffer[] = new byte[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 值 根据SHA-1值 判断文件是否是同一个文件    public static String getFileSha1(File file) {        if (!file.isFile()) {            return null;        }        MessageDigest digest = null;        FileInputStream in = null;        byte buffer[] = new byte[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();            }        }    }

2、直接判断内容是否相同

 public class  IOOperation  {      public static void main(String[] args)       {          FileInputStream File1 = null;          FileInputStream File2 = null;          BufferedReader in = null;          String sFile;          if(args.length != 2)          {              System.out.println("The command line should be: java IOOperation testX.txt testX.txt");              System.out.println("X should be one of the array: 1, 2, 3");              System.exit(0);          }          try          {              File1 = new FileInputStream(args[0]);              File2 = new FileInputStream(args[1]);              try              {                  if(File1.available() != File2.available())                  {                     //长度不同内容肯定不同                      System.out.println(args[0] + " is not equal to " + args[1]);                  }                  else                  {                      boolean tag = true;                      while( File1.read() != -1 && File2.read() != -1)                      {                          if(File1.read() != File2.read())                          {                              tag = false;                              break;                          }                      }                      if(tag == true)                          System.out.println(args[0] + " equals to " + args[1]);                      else                          System.out.println(args[0] + " is not equal to " + args[1]);                  }              }              catch(IOException e)              {                  System.out.println(e);              }          }          catch (FileNotFoundException e)          {              System.out.println("File can't find..");          }          finally          {              try              {                  if(File1 != null)                      File1.close();                  if(File2 != null)                      File2.close();              }              catch (IOException e)              {                  System.out.println(e);              }          }      }

相关文章