Android 获取文件以及文件夹MD5,用来做游戏程序的动态更新
2013-06-19 20:45
417 查看
package com.example.getfilemd5; import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.security.MessageDigest; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); File file=new File("/mnt/sdcard/version.txt"); Log.e("MD5", getFileMD5(file)); //遍历获取文件夹所有文件的MD5值 int filecount=0; File fileDir=new File("mnt/sdcard/MD5"); Map<String,String> DirMD5=getDirMD5(fileDir,true); for(Map.Entry<String, String> m:DirMD5.entrySet()) { filecount++; Log.e("Path="+m.getKey()+filecount, "MD5="+m.getValue()); } } //获取单个文件MD5 public static String getFileMD5(File file) { // TODO Auto-generated method stub 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值 public static Map<String,String> getDirMD5(File file,boolean listChild) { if(!file.isDirectory()) { return null; } 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; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
相关文章推荐
- Android 线程池及多线程下载,Progressbar动态更新以及文件保存sd卡
- Android:创建文件或文件夹以及获取sd卡根目录
- Android 线程池及多线程下载,Progressbar动态更新以及文件保存sd卡
- Android 通过文件管理器选择文件夹下面的文件以及获取路径
- C#获取文件夹/文件的大小以及占用空间
- 获取android应用签名证书(打包APK用到的那个文件)的SHA1,MD5,SHA256值
- 【Android开发经验】如何获取媒体库中所有音频文件信息,并在文件增删后及时更新媒体库(转)
- 动态获取程序的版本名称的方法以及dialog的简单用法以及两种上下文的区别
- VC获取当前程序文件的路径,文件名以及路径+文件名
- Android 获取文件/文件夹/转换文件的大小
- 通过字段名称动态获取资源的id(将Android工程做成jar包和资源文件)
- android获取、计算文件夹和文件大小的方法
- android动态换肤系列4——从apk文件中获取Resources对象(下)
- Android从网络获取北京时间以及动态的监听时间
- [原]用c#做了一个桌面程序用来分离excel文件里的数据时出现“操作必须使用一个可更新的查询”错误的解决
- c++获取文件夹路径(不是文件哦。。。)及程序当前路径
- 获取文件夹大小以及删除指定目录下文件及目录
- android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位
- 如何批量获取文件夹内的所有文件以及文件夹名 汇总到TXT或者EXL?
- JAVA android 获取assets文件夹中的properties文件 并从中获取数据