同一台机器,有很多相同名字的文件,如何判断它就是它?
例如文件A从路径1移动到路径2,我怎么知道它就是文件A?
例如文件A从路径1移动到路径2,我怎么知道它就是文件A?
解决方案 »
- 如何修改form1的标签
- 水晶報表
- 在web2.0中使用无刷技术
- listView里面的信息如何保存到文件?
- 最近MS下载的文件扩展名为.img请问用什么软件打开?那里可下载这个软件呢?
- 如何在combox中嵌套一个datagrid?
- 请问在命令行格式下能不能和怎样使用ConfigurationSettings.AppSettings ["Conn"];
- 论坛中怎么统计昨天的发帖数?急急急!!!!!
- DataAdaptor.Update()在连接关闭的情况下是不是也可以更新?
- 请问如何显示gif动画?pictureBox只能显示第一祯而不能显示动画?
- 如何汉化WINFORM版本的DevExpress.XtraScheduler控件和弹出Appointments表单的汉化
- 加码解码
using(FileStream fs = new FileStream(@"test.dat",FileMode.Open,FileAccess.Read))
{
MD5 md5 = MD5.Create();
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
string code = BitConverter.ToString(md5.ComputeHash(buffer));
}
filewatch才是正解??
{ /// <summary>
/// 计算文件的 MD5 值
/// </summary>
/// <param name="fileName">要计算 MD5 值的文件名和路径</param>
/// <returns>MD5 值16进制字符串</returns>
public static string MD5File(string fileName)
{
return HashFile(fileName, "md5");
} /// <summary>
/// 计算文件的哈希值
/// </summary>
/// <param name="fileName">要计算哈希值的文件名和路径</param>
/// <param name="algName">算法:sha1,md5</param>
/// <returns>哈希值16进制字符串</returns>
public static string HashFile(string fileName, string algName)
{
if (!System.IO.File.Exists(fileName))
return string.Empty; FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
byte[] hashBytes = HashData(fs, algName);
fs.Close();
return ByteArrayToHexString(hashBytes);
} /// <summary>
/// 计算哈希值
/// </summary>
/// <param name="stream">要计算哈希值的 Stream</param>
/// <param name="algName">算法:sha1,md5</param>
/// <returns>哈希值字节数组</returns>
public static byte[] HashData(Stream stream, string algName)
{
HashAlgorithm algorithm;
if (algName == null)
{
throw new ArgumentNullException("algName 不能为 null");
}
if (string.Compare(algName, "sha1", true) == 0)
{
algorithm = SHA1.Create();
}
else
{
if (string.Compare(algName, "md5", true) != 0)
{
throw new Exception("algName 只能使用 sha1 或 md5");
}
algorithm = MD5.Create();
}
return algorithm.ComputeHash(stream);
} /// <summary>
/// 字节数组转换为16进制表示的字符串
/// </summary>
public static string ByteArrayToHexString(byte[] data)
{
StringBuilder sb = new StringBuilder(data.Length * 3); foreach (byte b in data) sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' ')); return sb.ToString().ToUpper(); } //判断两个文件是否相同
public static bool isSameFile(string sourceFile, string destFile)
{
if (!File.Exists(destFile))
{
return false;
}
string source_md5 = MD5File(sourceFile);
string dest_md5 = MD5File(destFile);
if (source_md5 == dest_md5)
{
return true;
}
else
{
return false;
}
}
}
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
md5.Initialize();
byte[] bytes = md5.ComputeHash(fs);
md5.Clear();
fs.Close();
MessageBox.Show(Utils.ByteToString(bytes));