public static void SaveUnknownFile(byte[] data, DirectoryInfo directoryInfo) { string fileName = "Unknown_" + Encrypt.SimplexHash.ComputeMD5(data.Length.ToString()); string filePath = Path.Combine(directoryInfo.FullName, fileName); string extension = ""; //Find Extension try { using (MemoryStream stream = new MemoryStream(data)) { ImageFileFormat format = IOUtility.GetImageFormat(stream); if (format != ImageFileFormat.unknown) { extension = "." + format.ToString(); filePath += extension; } } } catch (Exception ex) { GDebug.Log(ex.ToString(), GLogLevel.Warnning); } int num = 2; while (File.Exists(filePath)) { filePath = Path.Combine(directoryInfo.FullName, fileName + num + extension); ++num; } using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite)) { fileStream.Write(data, 0, data.Length); } }
public static void DownloadFile(string url, DirectoryInfo directoryInfo) { byte[] data = DownloadData(url); //GetPath Uri uri = new Uri(url); string localPath; if (url.Length > 6 && url.Substring(url.Length - 6) == ":large") { //Twitter localPath = new Uri(url.Substring(0, url.Length - 6)).LocalPath; } else { localPath = uri.LocalPath; } string filePath = Path.Combine(directoryInfo.FullName, Path.GetFileName(localPath)); string fileName = Path.GetFileNameWithoutExtension(filePath); string extension = Path.GetExtension(filePath); //Find Extension if (string.IsNullOrEmpty(extension)) { try { using (MemoryStream stream = new MemoryStream(data)) { ImageFileFormat format = IOUtility.GetImageFormat(stream); if (format != ImageFileFormat.unknown) { extension = "." + format.ToString(); filePath += extension; } else { extension = ""; } } } catch (Exception ex) { GDebug.Log(ex.ToString(), GLogLevel.Warnning); extension = ""; } } int num = 2; while (File.Exists(filePath)) { filePath = Path.Combine(directoryInfo.FullName, fileName + num + extension); ++num; } using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite)) { fileStream.Write(data, 0, data.Length); } }