예제 #1
0
 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);
 }
예제 #2
0
 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();
         }
     }
 }