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;
}
}
}