针对目录中文件创建MD5值

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(){\n			return 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;
		}
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
├─res │ │ filemd5List.json │ │ │ ├─bank_res │ │ bank_title.png │ │ bt_getout_0.png │ │ bt_getout_1.png │ │ bt_open_0.png │ │ bt_open_1.png │ │ edit_frame.png │ │ im_arrow.png │ │ im_gold.png │ │ im_money.png │ │ │ ├─gameClear │ │ bt_quit_game_0.png │ │ bt_quit_game_1.png │ │ bt_return_game_0.png │ │ bt_return_game_1.png │ │ clearBox.png │ │ fishCatchNum.png │ │ fishMultipleNum.png │ │ multiple.png │ │ scoreNum.png │ │ │ ├─game_res │ │ Bank.csb │ │ blue.plist │ │ blue.png │ │ bomb.plist │ │ bomb.png │ │ boom_darts.plist │ │ boom_darts.png │ │ bt_bank_0.png │ │ bt_bank_1.png │ │ bt_blue_0.png │ │ bt_blue_1.png │ │ bt_blue_2.png │ │ bt_check_no.png │ │ bt_check_yes.png │ │ bt_clearing_0.png │ │ bt_clearing_1.png │ │ bt_fishtype_0.png │ │ bt_fishtype_1.png │ │ bt_green_0.png │ │ bt_green_1.png │ │ bt_green_2.png │ │ bt_help_0.png │ │ bt_help_1.png │ │ bt_menu_0.png │ │ bt_menu_1.png │ │ bt_mute_0.png │ │ bt_mute_1.png │ │ bt_mute_2.png │ │ bt_operation_0.png │ │ bt_operation_1.png │ │ bt_purple_0.png │ │ bt_purple_1.png │ │ bt_purple_2.png │ │ bt_quit_game_0.png │ │ bt_quit_game_1.png │ │ bt_red_0.png │ │ bt_red_1.png │ │ bt_red_2.png │ │ bt_return_game_0.png │ │ bt_return_game_1.png │ │ bt_send_0.png │ │ bt_send_1.png │ │ bt_setting_0.png │ │ bt_setting_1.png │ │ bt_supply_0.png │ │ bt_supply_1.png │ │ bt_yellow_0.png │ │ bt_yellow_1.png │ │ bt_yellow_2.png │ │ bullet.plist │ │ bullet.png │ │ bullet_bodies.plist │ │ bullet_guns_coins.plist │ │ bullet_guns_coins.png │ │ Cannon.csb │ │ chatBox.png │ │ clew_b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值