使用MD5备份文件!
日常需要备份文件到另外一个地方去,由于文件比较大,不想每次都覆盖,又不想每次手工备份。
不知道大家如何判断两个文件是否是同一个文件?或者说一个文件没有经过修改?
我唯一的思路是根据XunLei或者eMule的思路,给每个文件产生一个ID,根据这个ID是否一样,还判断是否需要更新。
而不是根据文件的时间信息等。因为我测试一些软件时需要不时修改系统的时间,如果根据时间,可能出出现一些误会。
啥也不说了,附上代码吧:比较简单,高手勿笑!
private string MD5(string fileName)
{
string temp = ""
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] md5byte = md5.ComputeHash(fs);
int i, j;
foreach (byte b in md5byte)
{
i = Convert.ToInt32(b);
j = i >> 4;
temp = temp + Convert.ToString(j, 16);
j = ((i << 4) & 0x00ff) >> 4;
temp = temp + Convert.ToString(j, 16);
}
return temp;
}
private void CopyThisFile(string filename)
{
string srctemp = ""
srctemp = filename.Substring(filename.IndexOf(srcPath)+ srcPath.Length+1);
string decTemp = ""
if (decPath.Substring(decPath.Length - 1) == @"\")
decTemp = decPath +srctemp;
else
decTemp = decPath + @"\" + srctemp;
FileInfo abc = new FileInfo(decTemp);
if (!Directory.Exists(abc.DirectoryName))
{
Directory.CreateDirectory(abc.DirectoryName);
}
if (File.Exists(decTemp))
{
if (MD5(filename) == MD5(decTemp))
{
}
else
{
File.Copy(filename, decTemp,true);
}
}
else
{
File.Copy(filename, decTemp);
}
}