Kaynağa Gözat

Fix for failing to save new files

Brad Robinson 7 yıl önce
ebeveyn
işleme
900746c0d1
1 değiştirilmiş dosya ile 28 ekleme ve 20 silme
  1. 28 20
      PetaJson.cs

+ 28 - 20
PetaJson.cs

@@ -118,35 +118,43 @@ namespace PetaJson
                 // Write the temp file
                 WriteFile(tempName, o, (options | JsonOptions.Flush));
 
-                bool savePreviousVersion = false;
-
-                if ((options & JsonOptions.AutoSavePreviousVersion)!=0)
-                {
-                    savePreviousVersion = SavePreviousVersions;
-                }
-                else if ((options & JsonOptions.SavePreviousVersion)!=0)
+                if (System.IO.File.Exists(filename))
                 {
-                    savePreviousVersion = true;
-                }
+                    bool savePreviousVersion = false;
 
+                    if ((options & JsonOptions.AutoSavePreviousVersion)!=0)
+                    {
+                        savePreviousVersion = SavePreviousVersions;
+                    }
+                    else if ((options & JsonOptions.SavePreviousVersion)!=0)
+                    {
+                        savePreviousVersion = true;
+                    }
 
-                // Work out backup filename
-                if (savePreviousVersion)
-                {
-                    // Make sure have a backup filename
-                    if (backupFilename == null)
+
+                    // Work out backup filename
+                    if (savePreviousVersion)
+                    {
+                        // Make sure have a backup filename
+                        if (backupFilename == null)
+                        {
+                            backupFilename = filename + ".previous";
+                        }
+                    }
+                    else
                     {
-                        backupFilename = filename + ".previous";
+                        // No backup
+                        backupFilename = null;
                     }
+
+                    // Replace it
+                    File.Replace(tempName, filename, backupFilename);
                 }
                 else
                 {
-                    // No backup
-                    backupFilename = null;
+                    // Rename it
+                    File.Move(tempName, filename);
                 }
-
-                // Replace it
-                File.Replace(tempName, filename, backupFilename);
             }
             catch
             {