using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using HXX.Scanner.Common; namespace HXX.Scanner.Biz { /// /// 磁盘相关业务 /// public class biz_disk { /// /// 获取磁盘剩余空间 /// /// /// public static string getDataDirLeftSpace(string path) { string result = string.Empty; try { if (path != null && path.Length > 2) { var s = GetHardDiskFreeSpace(path.Substring(0, 1)); if (s > 10) { result = (int)s + "G"; } else if (s < 1) { result = (int)(s * 1000) + "M"; } else { result = s.ToString("0.0") + "G"; } } } catch (Exception ee) { result = "--G"; LogManager.WriteLog(path + Environment.NewLine + ee.Message); } return result; } /// /// 获取磁盘剩余空间 /// /// /// public static double getDataDirLeftSpace_double(string path) { return GetHardDiskFreeSpace(path.Substring(0, 1)); } /// /// 获取指定驱动器的剩余空间总大小(单位为GB) /// /// 只需输入代表驱动器的字母即可 private static double GetHardDiskFreeSpace(string str_HardDiskName) { double freeSpace = 0; str_HardDiskName = str_HardDiskName + ":\\"; foreach (var drive in DriveInfo.GetDrives()) { if (drive.Name == str_HardDiskName.ToUpper()) { freeSpace = drive.TotalFreeSpace * 1.0 / (1024 * 1024 * 1024); break; } } return freeSpace; } /// /// 获取当前磁盘使用状态 /// /// public static ResponseEntity check_disk_status() { ResponseEntity result = new ResponseEntity(); try { var dir = config_manager.Get("dataDir"); if (string.IsNullOrEmpty(dir)) { result.Status = 520; result.Message = "请先设置数据存放位置"; } else { var vol = getDataDirLeftSpace_double(dir); if (vol < 0.5) { result.Status = 509; result.Message = "磁盘剩余空间较少"; } else if (vol < 5) { result.Status = 510; result.Message = "磁盘剩余空间较少"; } else { result.Status = 200; result.Message = "ok"; } } } catch (Exception ee) { LogManager.WriteLog(ee); result.Status = 509; result.Message = ee.Message; } return result; } } }