123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- using System;
- using System.IO;
- using System.Text;
- namespace Vinno.vCloud.Disk
- {
- public static class FileHelper
- {
- /// <summary>
- /// 写文件
- /// </summary>
- /// <param name="fileName"></param>
- /// <param name="contexts"></param>
- /// <param name="encodingStr"></param>
- public static void WriteFile(string fileName, string contexts, string encodingStr = "UTF-8")
- {
- try
- {
- if (!string.IsNullOrEmpty(fileName))
- {
- using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
- {
- Encoding textEncoding = Encoding.GetEncoding(encodingStr.ToUpper());
- using (StreamWriter streamWriter = new StreamWriter(fs, textEncoding))
- {
- streamWriter.Write(contexts);
- }
- }
- }
- }
- catch
- {
- // ignored
- }
- }
- /// <summary>
- /// 追加文件信息
- /// </summary>
- /// <param name="fileName"></param>
- /// <param name="contexts"></param>
- /// <param name="encodingStr"></param>
- public static void AppendWriteFile(string fileName, string contexts, string encodingStr = "UTF-8")
- {
- try
- {
- if (!string.IsNullOrEmpty(fileName))
- {
- using (FileStream fs = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
- {
- Encoding textEncoding = Encoding.GetEncoding(encodingStr.ToUpper());
- using (StreamWriter streamWriter = new StreamWriter(fs, textEncoding))
- {
- if (!contexts.EndsWith("\r\n"))
- {
- streamWriter.Write(contexts + "\r\n");
- }
- else
- {
- streamWriter.Write(contexts);
- }
- }
- }
- }
- }
- catch
- {
- // ignored
- }
- }
- /// <summary>
- /// 读取文件内容
- /// </summary>
- /// <param name="fileName"></param>
- /// <param name="encodingStr"></param>
- /// <returns></returns>
- public static string ReaderFile(string fileName, string encodingStr = "UTF-8")
- {
- try
- {
- if (File.Exists(fileName))
- {
- using (var fileStream = File.OpenRead(fileName))
- {
- using (StreamReader reader = new StreamReader(fileStream, Encoding.GetEncoding(encodingStr)))
- {
- if (reader.Peek() != -1)//防止读不完全问题
- {
- string txtline = reader.ReadToEnd();
- return txtline;
- }
- }
- }
- }
- }
- catch
- {
- // ignored
- }
- return string.Empty;
- }
- /// <summary>
- /// 拷贝文件夹
- /// </summary>
- /// <param name="srcFolder"></param>
- /// <param name="targetFolder"></param>
- public static void CopyFiles(string srcFolder, string targetFolder, Action<int> progressCallback = null)
- {
- Directory.CreateDirectory(targetFolder);
- int finishFileCount = 0;
- var files = Directory.GetFiles(srcFolder);
- foreach (var file in files)
- {
- File.Copy(file, file.Replace(srcFolder, targetFolder), true);
- finishFileCount++;
- progressCallback?.Invoke((int)(finishFileCount / (double)files.Length * 99));
- }
- var dirs = Directory.GetDirectories(srcFolder);
- foreach (var dir in dirs)
- {
- CopyFiles(dir, dir.Replace(srcFolder, targetFolder));
- }
- progressCallback?.Invoke(100);
- }
- }
- }
|