123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- using System.Text;
- namespace Alchemy.Core.Services
- {
- public class FileService
- {
- //编码格式:去除BOM头的UTF8
- private static Encoding _enc = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false);
- /// <summary>
- /// 读取文件内容
- /// </summary>
- /// <param name="strFilePath"></param>
- /// <returns></returns>
- public static string ReadAll(string strFilePath)
- {
- FileInfo fileInfo = new FileInfo(strFilePath);
- if (fileInfo.Exists)
- return File.ReadAllText(strFilePath, _enc);
- else
- return string.Empty;
- }
- /// <summary>
- /// 写入文件内容
- /// </summary>
- /// <param name="strFilePath"></param>
- /// <param name="strContent"></param>
- public static void WriteAll(string strFilePath, string strContent)
- {
- File.WriteAllText(strFilePath, strContent, _enc);
- }
- public static long GetFolderSize(string folderPath)
- {
- DirectoryInfo directoryInfo = new DirectoryInfo(folderPath);
- return GetDirectorySize(directoryInfo);
- }
- public static string GetFileSizeToShowTxt(string filePath)
- {
- FileInfo fileInfo = new FileInfo(filePath);
- long byteSize = fileInfo.Length;
- if (byteSize < 1024)
- return $"{byteSize}B";
- else
- {
- if (byteSize < 1024 * 1024)
- return $"{byteSize / 1024}KB";
- else
- return $"{byteSize / 1024 / 1024}MB";
- }
- }
- public static string GetFolderSizeToShowTxt(string folderPath)
- {
- DirectoryInfo directoryInfo = new DirectoryInfo(folderPath);
- long byteSize = GetDirectorySize(directoryInfo);
- if (byteSize < 1024)
- return $"{byteSize}B";
- else
- {
- if (byteSize < 1024 * 1024)
- return $"{byteSize / 1024}KB";
- else
- return $"{byteSize / 1024 / 1024}MB";
- }
- }
- private static long GetDirectorySize(DirectoryInfo directoryInfo)
- {
- long size = 0;
- FileInfo[] files = directoryInfo.GetFiles();
- DirectoryInfo[] directories = directoryInfo.GetDirectories();
- foreach (FileInfo file in files)
- {
- size += file.Length;
- }
- foreach (DirectoryInfo dir in directories)
- {
- size += GetDirectorySize(dir);
- }
- return size;
- }
- /// <summary>
- /// 写入文本内容
- /// </summary>
- /// <param name="strFilePath"></param>
- /// <param name="lines"></param>
- public static void WriteAllLines(string strFilePath, string[] lines)
- {
- File.WriteAllLines(strFilePath, lines, Encoding.UTF8);
- }
- public static bool Empty(DirectoryInfo directory)
- {
- try
- {
- foreach (FileInfo file in directory.GetFiles("*", SearchOption.AllDirectories))
- {
- try
- {
- File.Delete(file.FullName);
- }
- catch (UnauthorizedAccessException)
- {
- File.SetAttributes(file.FullName, FileAttributes.Normal);
- File.Delete(file.FullName);
- }
- }
- foreach (DirectoryInfo subDirectory in directory.GetDirectories())
- {
- DeleteFolder(subDirectory);
- }
- return true;
- }
- catch (Exception ex)
- {
- return false;
- }
- }
- private static void DeleteFolder(DirectoryInfo subDirectory)
- {
- try
- {
- foreach (FileInfo file in subDirectory.GetFiles("*", SearchOption.AllDirectories))
- {
- try
- {
- File.Delete(file.FullName);
- }
- catch (UnauthorizedAccessException)
- {
- File.SetAttributes(file.FullName, FileAttributes.Normal);
- File.Delete(file.FullName);
- }
- }
- foreach (DirectoryInfo subDir in subDirectory.GetDirectories())
- {
- DeleteFolder(subDir);
- }
- subDirectory.Delete(true);
- }
- catch (Exception ex)
- {
- }
- }
- public static long GetFolderSize2(string folderPath)
- {
- DirectoryInfo directory = new DirectoryInfo(folderPath);
- return directory.EnumerateFiles("*", SearchOption.AllDirectories)
- .Sum(file => file.Length);
- }
- public static string FindOlderestFolder(string path)
- {
- DirectoryInfo dir = new DirectoryInfo(path);
- DirectoryInfo[] directories = dir.GetDirectories();
- DateTime earliestTime = DateTime.MaxValue;
- DirectoryInfo earliestDir = null;
- foreach (DirectoryInfo directory in directories)
- {
- if (directory.CreationTime < earliestTime)
- {
- earliestTime = directory.CreationTime;
- earliestDir = directory;
- }
- }
- if (earliestDir != null)
- {
- return earliestDir.FullName;
- }
- else
- {
- return "";
- }
- }
- }
- }
|