PixiFilesManager.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Text;
  6. using Newtonsoft.Json;
  7. namespace PixiEditor.Models.IO
  8. {
  9. public static class PixiFilesManager
  10. {
  11. public static string TempFolderPath
  12. {
  13. get { return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"PixiEditor\Temp"); }
  14. }
  15. public static string RedoStackPath
  16. {
  17. get { return Path.Combine(TempFolderPath, @"RedoStack"); }
  18. }
  19. public static string UndoStackPath
  20. {
  21. get { return Path.Combine(TempFolderPath, @"UndoStack"); }
  22. }
  23. /// <summary>
  24. /// Saves object to file on disk using binary formatter
  25. /// </summary>
  26. /// <param name="obj">Object to be saved</param>
  27. public static void SaveObjectToJsonFile<T>(T obj, string fileName) where T : new()
  28. {
  29. try
  30. {
  31. SaveSerializedObjectToFile(obj, fileName);
  32. }
  33. catch (IOException ex)
  34. {
  35. Debug.WriteLine(ex.Message);
  36. }
  37. }
  38. public static void RemoveFile(string path)
  39. {
  40. File.Delete(path);
  41. }
  42. /// <summary>
  43. /// Removes all files from directory
  44. /// </summary>
  45. /// <param name="path"></param>
  46. public static void ClearDirectory(string path)
  47. {
  48. string[] filesInDirectory = Directory.GetFiles(path);
  49. for (int i = 0; i < filesInDirectory.Length; i++)
  50. {
  51. File.Delete(filesInDirectory[i]);
  52. }
  53. }
  54. private static void SaveSerializedObjectToFile(object obj, string filename)
  55. {
  56. using (TextWriter writer = new StreamWriter(filename, false))
  57. {
  58. var contentsToWriteToFile = JsonConvert.SerializeObject(obj);
  59. writer.Write(contentsToWriteToFile);
  60. }
  61. }
  62. public static T ReadObjectFromFile<T>(string filePath) where T : new()
  63. {
  64. using (TextReader reader = new StreamReader(filePath))
  65. {
  66. var fileContent = reader.ReadToEnd();
  67. return JsonConvert.DeserializeObject<T>(fileContent);
  68. }
  69. }
  70. /// <summary>
  71. /// Creates and cleares temp directories
  72. /// </summary>
  73. public static void InitializeTempDirectories()
  74. {
  75. CreateTempDirectories();
  76. ClearTempDirectoriesContent();
  77. }
  78. private static void CreateTempDirectories()
  79. {
  80. Directory.CreateDirectory(TempFolderPath);
  81. Directory.CreateDirectory(Path.Combine(TempFolderPath, "UndoStack"));
  82. Directory.CreateDirectory(Path.Combine(TempFolderPath, "RedoStack"));
  83. }
  84. public static void ClearTempDirectoriesContent()
  85. {
  86. ClearDirectory(RedoStackPath);
  87. ClearDirectory(UndoStackPath);
  88. }
  89. }
  90. }