您的位置:首页 > 移动开发 > Android开发

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;
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐