针对目录中文件创建MD5值

来源:互联网 发布:linux route 编辑:程序博客网 时间:2024/05/23 00:30
import java.security.MessageDigest;import java.io.FileInputStream;import java.io.File;import java.io.InputStream;import java.util.Arrays;import java.util.List;import java.util.ArrayList;import java.io.FileWriter;public class MD5Create {private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',        'A', 'B', 'C', 'D', 'E', 'F' };    static List<String> paths = new ArrayList<String>();     static String apklistfile = "./Md5Checklist.java";    public static void appendMethodB(String fileName, String content) {        try {            //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件            FileWriter writer = new FileWriter(fileName, true);            writer.write(content);            writer.close();        } catch (Exception e) {            e.printStackTrace();        }    }public static void main(String[] args){                String a,b;                String base=new String("00000000000000000000000000000000");                appendMethodB(apklistfile, "package android.util;\n");                 appendMethodB(apklistfile, "public class Md5Checklist {\n");                 appendMethodB(apklistfile, "    private static final String[] checklist = {\n");                GetDirFiles(args[0],"apk",false);                 for (int i = 0; i < paths.size(); i++)                  {                   base =  StringAddFunction(base,paths.get(i));                }                  System.out.println(base);                appendMethodB(apklistfile, "    };\n\n");                appendMethodB(apklistfile, "    public static String[] getMd5Checklist(){\nreturn checklist;\n    }\n");                appendMethodB(apklistfile, "}\n");}public static String toHexString(byte[] b) {   StringBuilder sb = new StringBuilder(b.length * 2);   for (int i = 0; i < b.length; i++) {       sb.append(HEX_DIGITS[(b[i] & 0xf0) >>> 4]);       sb.append(HEX_DIGITS[b[i] & 0x0f]);   }   return sb.toString();  }public static String StringAddFunction(String a, String b) {   StringBuilder sb = new StringBuilder(b.length() * 2);                   int count=0;                 int aa,bb; for (int i = 0; i < b.length(); i++) {                          if (a.charAt(i)>='A')                           {                              aa = a.charAt(i)-'A'+10;                          }                          else                          {                             aa = a.charAt(i);                          }                         if (b.charAt(i)>='A')                          {                              bb = b.charAt(i)-'A'+10;                          }                         else                          {                              bb = b.charAt(i);                          }                      count = bb+aa;                      count= count%16;                      sb.append(HEX_DIGITS[count]);   }   return sb.toString();  }public static void GetDirFiles(String Path, String Extension, boolean IsIterative)    {          File[] files = new File(Path).listFiles();          File f;          String md5_add_value;        String md5_read_value;        if(files == null)          {              return;          }          for (int i = 0; i < files.length; i++)          {              f = files[i];              if(!f.canRead())              {                  return;              }              if (f.isFile())              {                  if (f.getName().contains(Extension))                                           {                      paths.add(md5sum(f.getPath()));                      appendMethodB(apklistfile, "        \""+f.getName()+"\",\n");                 }              }              else if (f.isDirectory())                    GetDirFiles(f.getPath(), Extension, IsIterative);          }         }  public static String md5sum(String filename) {InputStream fis;byte[] buffer = new byte[1024];int numRead = 0;MessageDigest md5;try{fis = new FileInputStream(filename);md5 = MessageDigest.getInstance("MD5");while((numRead=fis.read(buffer)) > 0) {md5.update(buffer,0,numRead);}fis.close();return toHexString(md5.digest());} catch (Exception e) {System.out.println("error");return null;}}}

0 0
原创粉丝点击