FileHelper.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. namespace Vinno.vCloud.Disk
  5. {
  6. public static class FileHelper
  7. {
  8. /// <summary>
  9. /// 写文件
  10. /// </summary>
  11. /// <param name="fileName"></param>
  12. /// <param name="contexts"></param>
  13. /// <param name="encodingStr"></param>
  14. public static void WriteFile(string fileName, string contexts, string encodingStr = "UTF-8")
  15. {
  16. try
  17. {
  18. if (!string.IsNullOrEmpty(fileName))
  19. {
  20. using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
  21. {
  22. Encoding textEncoding = Encoding.GetEncoding(encodingStr.ToUpper());
  23. using (StreamWriter streamWriter = new StreamWriter(fs, textEncoding))
  24. {
  25. streamWriter.Write(contexts);
  26. }
  27. }
  28. }
  29. }
  30. catch
  31. {
  32. // ignored
  33. }
  34. }
  35. /// <summary>
  36. /// 追加文件信息
  37. /// </summary>
  38. /// <param name="fileName"></param>
  39. /// <param name="contexts"></param>
  40. /// <param name="encodingStr"></param>
  41. public static void AppendWriteFile(string fileName, string contexts, string encodingStr = "UTF-8")
  42. {
  43. try
  44. {
  45. if (!string.IsNullOrEmpty(fileName))
  46. {
  47. using (FileStream fs = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
  48. {
  49. Encoding textEncoding = Encoding.GetEncoding(encodingStr.ToUpper());
  50. using (StreamWriter streamWriter = new StreamWriter(fs, textEncoding))
  51. {
  52. if (!contexts.EndsWith("\r\n"))
  53. {
  54. streamWriter.Write(contexts + "\r\n");
  55. }
  56. else
  57. {
  58. streamWriter.Write(contexts);
  59. }
  60. }
  61. }
  62. }
  63. }
  64. catch
  65. {
  66. // ignored
  67. }
  68. }
  69. /// <summary>
  70. /// 读取文件内容
  71. /// </summary>
  72. /// <param name="fileName"></param>
  73. /// <param name="encodingStr"></param>
  74. /// <returns></returns>
  75. public static string ReaderFile(string fileName, string encodingStr = "UTF-8")
  76. {
  77. try
  78. {
  79. if (File.Exists(fileName))
  80. {
  81. using (var fileStream = File.OpenRead(fileName))
  82. {
  83. using (StreamReader reader = new StreamReader(fileStream, Encoding.GetEncoding(encodingStr)))
  84. {
  85. if (reader.Peek() != -1)//防止读不完全问题
  86. {
  87. string txtline = reader.ReadToEnd();
  88. return txtline;
  89. }
  90. }
  91. }
  92. }
  93. }
  94. catch
  95. {
  96. // ignored
  97. }
  98. return string.Empty;
  99. }
  100. /// <summary>
  101. /// 拷贝文件夹
  102. /// </summary>
  103. /// <param name="srcFolder"></param>
  104. /// <param name="targetFolder"></param>
  105. public static void CopyFiles(string srcFolder, string targetFolder, Action<int> progressCallback = null)
  106. {
  107. Directory.CreateDirectory(targetFolder);
  108. int finishFileCount = 0;
  109. var files = Directory.GetFiles(srcFolder);
  110. foreach (var file in files)
  111. {
  112. File.Copy(file, file.Replace(srcFolder, targetFolder), true);
  113. finishFileCount++;
  114. progressCallback?.Invoke((int)(finishFileCount / (double)files.Length * 99));
  115. }
  116. var dirs = Directory.GetDirectories(srcFolder);
  117. foreach (var dir in dirs)
  118. {
  119. CopyFiles(dir, dir.Replace(srcFolder, targetFolder));
  120. }
  121. progressCallback?.Invoke(100);
  122. }
  123. }
  124. }