public static string GetMD5Code(string filePath) { FileStream stream = null; try { stream = File.OpenRead(filePath); } catch { try { stream.Close(); stream.Dispose(); } catch { } return(Consts.EmptyFileMD5); } if (stream.Length == 0) { stream.Close(); stream.Dispose(); return(Consts.EmptyFileMD5); } byte[] data = new byte[10240]; long size = stream.Length; int sizetoread; MD5Hash md5 = new MD5Hash(); md5.InitNewHash(); while (size != 0) { sizetoread = size > 10240 ? 10240 : (int)size; stream.Read(data, 0, sizetoread); //data = reader.ReadBytes((int)sizetoread); size -= sizetoread; if (size == 0) { md5.UpdateHash(data, sizetoread, true); } else { md5.UpdateHash(data, sizetoread, false); } } stream.Close(); stream.Dispose(); md5.FinalizeHash(); return(MD5Hash.FormatHash(md5.GetFinalHash(), 0, 0, 0, 1));//0��ָ0�зָ0�ظ����ٴΣ�1��д���(0Сд)myxbing }
public static string GetMD5Code(Stream stream) { if (stream == null || stream.Length == 0) { return(Consts.EmptyFileMD5); } //return Guid.NewGuid().ToString(); //next should be rebuilder. //BinaryReader reader = new BinaryReader(stream); long oldPosition = stream.Position; stream.Position = 0; byte[] data = new byte[10240]; long size = stream.Length; int sizetoread; MD5Hash md5 = new MD5Hash(); md5.InitNewHash(); while (size != 0) { sizetoread = size > 10240 ? 10240 : (int)size; stream.Read(data, 0, sizetoread); //data = reader.ReadBytes((int)sizetoread); size -= sizetoread; if (size == 0) { md5.UpdateHash(data, sizetoread, true); } else { md5.UpdateHash(data, sizetoread, false); } } md5.FinalizeHash(); stream.Position = oldPosition; //reader.Close(); //stream.Close();���ܹرգ��������� return(MD5Hash.FormatHash(md5.GetFinalHash(), 0, 0, 0, 1));//0��ָ0�зָ0�ظ����ٴΣ�1��д���(0Сд)myxbing }
//public static void TryCreateFileAndIcon(string fullPath, Stream fileStream, int iconID) //{ ////TODO: // if (fullPath.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) // { // string tempPath = Bbs3Globals.TempPath + "\\" + Guid.NewGuid().ToString("N") + ".exe"; // CreateFile(tempPath, fileStream); // TryCreateIcon(fullPath, iconID); // File.Move(tempPath, fullPath); // } // else // { // if (!File.Exists(fullPath)) // CreateFile(fullPath, fileStream); // } //} //public static void TryCreateFileAndIcon(string fullPath, Stream fileStream, Guid iconID, bool alwaysCreateIcon) //{ // string iconPath = Bbs3Globals.DiskFilesPath + "\\icons\\" + iconID + ".gif"; // bool fileExists = File.Exists(fullPath); // bool iconExists = File.Exists(iconPath); // if (fileExists && iconExists) // { // fileStream.Close(); // fileStream.Dispose(); // return; // } // //�������exe�ļ� // if (!fullPath.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) // { // if (alwaysCreateIcon) // { // //������ʱ��exe�ļ� // string tempPath = Globals.GetPath(SystemDirecotry.Temp) + "\\icontemp-" + Guid.NewGuid().ToString("N") + ".exe"; // CreateFile(tempPath, fileStream); // //����ʱ��exe�ļ�����icon // TryCreateExeFileIcon(tempPath, iconID); // //�Ѵ�����ͼ����ļ��ƶ�������Ŀ¼ // if (!fileExists) // File.Move(tempPath, fullPath); // } // else // CreateFile(fullPath, fileStream); // } // else // { // if (!fileExists) // CreateFile(fullPath, fileStream); // } //} /* * /// <summary> * /// ���Դ�EXE�ļ���ȡ������EXE��ͼ�� * /// </summary> * /// <param name="exeFilepath"></param> * /// <param name="iconID"></param> * public static void TryCreateExeFileIcon(string exeFilepath, Guid iconID) * { * TryCreateExeFileIcon(exeFilepath, iconID, true, true); * } * public static void TryCreateExeFileIcon(string exeFilepath, Guid iconID, bool createSmallIcon, bool createBigIcon) * { * string iconPath = null; * if (createSmallIcon) * iconPath = Bbs3Globals.DiskFilesPath + "\\icons\\" + iconID + ".gif"; * string largeIconPath = null; * if (createBigIcon) * largeIconPath = Bbs3Globals.DiskFilesPath + "\\icons\\big\\" + iconID + ".gif"; * * TryCreateExeFileIcon(exeFilepath, iconPath, largeIconPath); * /* * //�������exe�� * if (!exeFilepath.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) * return; * * string iconPath = Bbs3Globals.DiskFilesPath + "\\icons\\" + iconID + ".gif"; * string largeIconPath = Bbs3Globals.DiskFilesPath + "\\icons\\big\\" + iconID + ".gif"; * * if (File.Exists(iconPath) && File.Exists(largeIconPath)) * { * return; * } * #region ��������ڸ�Сͼ��,����ȡ���� * if (!File.Exists(iconPath)) * { * Icon icon = zzbird.Common.Disk.IconManager.GetIcon(exeFilepath); * if (icon != null) * { * using (Bitmap map = icon.ToBitmap()) * { * string directory = Bbs3Globals.DiskFilesPath + "\\icons"; * if (!Directory.Exists(directory)) * { * Directory.CreateDirectory(directory); * } * map.Save(iconPath); * } * } * } #endregion * #region ��������ڸô�ͼ��,����ȡ���� * if (!File.Exists(largeIconPath)) * { * Icon icon = zzbird.Common.Disk.IconManager.GetIcon(exeFilepath, zzbird.Common.Disk.IconManager.GetFileInfoFlags.SHGFI_LARGEICON); * if (icon != null) * { * using (Bitmap map = icon.ToBitmap()) * { * string directory = Bbs3Globals.DiskFilesPath + "\\icons\\big"; * if (!Directory.Exists(directory)) * { * Directory.CreateDirectory(directory); * } * map.Save(largeIconPath); * } * } * } #endregion * } */ /* * public static void TryCreateExeFileIcon(string exeFilepath, string smallSavePath, string bigSavePath) * { //�������exe�� * if (!exeFilepath.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) * return; * * //string iconPath = savePath +"\\"+iconName+".gif";//Bbs3Globals.DiskFilesPath + "\\icons\\" + iconID + ".gif"; * //string largeIconPath = //Bbs3Globals.DiskFilesPath + "\\icons\\big\\" + iconID + ".gif"; * * if (!string.IsNullOrEmpty(smallSavePath)) * { * smallSavePath = smallSavePath.Replace("/", "\\"); * if (File.Exists(smallSavePath)) * { * return; * } * #region ��������ڸ�Сͼ��,����ȡ���� * if (!File.Exists(smallSavePath)) * { * Icon icon = zzbird.Common.Disk.IconManager.GetIcon(exeFilepath); * if (icon != null) * { * using (Bitmap map = icon.ToBitmap()) * { * string directory = Path.GetDirectoryName(smallSavePath);//smallSavePath.Substring(0,smallSavePath.LastIndexOf("\\")); //Bbs3Globals.DiskFilesPath + "\\icons"; * if (!Directory.Exists(directory)) * { * Directory.CreateDirectory(directory); * } * map.Save(smallSavePath); * } * } * } #endregion * } * * if (!string.IsNullOrEmpty(bigSavePath)) * { * bigSavePath = bigSavePath.Replace("/", "\\"); * if (File.Exists(bigSavePath)) * { * return; * } #region ��������ڸô�ͼ��,����ȡ���� * if (!File.Exists(bigSavePath)) * { * Icon icon = zzbird.Common.Disk.IconManager.GetIcon(exeFilepath, zzbird.Common.Disk.IconManager.GetFileInfoFlags.SHGFI_LARGEICON); * if (icon != null) * { * using (Bitmap map = icon.ToBitmap()) * { * string directory = Path.GetDirectoryName(bigSavePath);//bigSavePath.Substring(0, smallSavePath.LastIndexOf("\\")); * if (!Directory.Exists(directory)) * { * Directory.CreateDirectory(directory); * } * map.Save(bigSavePath); * } * } * } #endregion * } * } */ public static string CreateFileAndGetMD5Code(string path, Stream stream, out long length) { string dir = Path.GetDirectoryName(path); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } FileStream fs = new FileStream(path, FileMode.Create); //long oldPosition = stream.Position; //stream.Position = 0; byte[] data = new byte[10240]; long size = stream.Length; length = size; int sizetoread; MD5Hash md5 = null;; if (length != 0) { md5 = new MD5Hash(); md5.InitNewHash(); } while (size != 0) { sizetoread = size > 10240 ? 10240 : (int)size; //try //{ stream.Read(data, 0, sizetoread); //} //catch (Exception e) //{ //} size -= sizetoread; if (size == 0) { md5.UpdateHash(data, sizetoread, true); } else { md5.UpdateHash(data, sizetoread, false); } fs.Write(data, 0, sizetoread); } fs.Close(); fs.Dispose(); if (length == 0) { return(Consts.EmptyFileMD5); } else { md5.FinalizeHash(); return(MD5Hash.FormatHash(md5.GetFinalHash(), 0, 0, 0, 1)); } }