private static bool RestoreFromFileWithSize(string fn, string init) { try { string startWithFn = SafetyFile.GetFilenameStartWith(fn + init); if (string.IsNullOrEmpty(startWithFn)) { return(false); } SafetyFile.AssertFileSize(startWithFn); File.Copy(startWithFn, fn); } catch { return(false); } return(true); }
public static void Save(Stream stm, string fn) { if (File.Exists(fn)) { var newName = SafetyFile.GetNewName(fn); SafetyFile.WriteStreamToFile(stm, newName); SafetyFile.DeleteFilesNameStartWith(newName + "_"); var fi = new FileInfo(newName); var newSplitFn = newName + "_" + fi.Length; FileEx.ReName(newName, newSplitFn); fi = new FileInfo(fn); string oldName = SafetyFile.GetOldName(fn) + "_"; SafetyFile.DeleteFilesNameStartWith(oldName); string newfn = oldName + fi.Length; if (SafetyFile.IsFileStreamWithName(stm, fn)) { stm.Close(); } FileEx.ReName(fn, newfn); SafetyFile.AssertFileSize(newSplitFn); FileEx.ReName(newSplitFn, fn); } else { int idx = fn.LastIndexOf('\\'); if (idx > 0) { Directory.CreateDirectory(fn.Substring(0, idx)); } SafetyFile.WriteStreamToFile(stm, fn); if (SafetyFile.IsFileStreamWithName(stm, fn)) { stm.Close(); } } }