DriveInfo 可以对 ASP.NET 进行磁盘操作。
DriveInfo 的名称空间是:
System.IO
我们以一个示例演示 DriveInfo 的应用。
DriveInfo[] driveInfos = DriveInfo.GetDrives(); //返回所有逻辑驱动器
foreach (DriveInfo driveInfo in driveInfos)
{
if (driveInfo.IsReady)
{
//磁盘已经准备好。
string driveName = driveInfo.Name;
string volumeLabel = driveInfo.VolumeLabel;
long totalSize = driveInfo.TotalSize;
long totalFreeSpace = driveInfo.TotalFreeSpace;
long availableFreeSpace = driveInfo.AvailableFreeSpace;
string driveFormat = driveInfo.DriveFormat; //NTFS, FAT32...
DriveType driveType = driveInfo.DriveType;
}
}
foreach (DriveInfo driveInfo in driveInfos)
{
if (driveInfo.IsReady)
{
//磁盘已经准备好。
string driveName = driveInfo.Name;
string volumeLabel = driveInfo.VolumeLabel;
long totalSize = driveInfo.TotalSize;
long totalFreeSpace = driveInfo.TotalFreeSpace;
long availableFreeSpace = driveInfo.AvailableFreeSpace;
string driveFormat = driveInfo.DriveFormat; //NTFS, FAT32...
DriveType driveType = driveInfo.DriveType;
}
}
除了使用 System.IO.DriveInfo(Whidbey 方式)来获取磁盘信息外,还可以使用另外两种方法,这里作个简单的说明。
WMI 方式
使用 ManagementObject。
ManagementObject 的名称空间是:
System.Management
ManagementObject 的程序集是:
System.Management(在 System.Management.dll 中)
名称空间和程序集默认都是没有导入的。程序集可以在工程的属性中导入。
示例:
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.deviceid=/"C:/""); ;
disk.Get();
long size = Convert.ToInt64(disk["Size"]);
long freeSpace = Convert.ToInt64(disk["FreeSpace"]);
disk.Get();
long size = Convert.ToInt64(disk["Size"]);
long freeSpace = Convert.ToInt64(disk["FreeSpace"]);
interop 方式
分三步。
第一步、导入名称空间:
using System.Runtime.InteropServices;
第二步、引入函数:
[DllImport("kernel32.dll")]
public static extern bool GetDiskFreeSpaceEx(
string lpDirectoryName,
out UInt64 lpFreeBytesAvailable,
out UInt64 lpTotalNumberOfBytes,
out UInt64 lpTotalNumberOfFreeBytes);
public static extern bool GetDiskFreeSpaceEx(
string lpDirectoryName,
out UInt64 lpFreeBytesAvailable,
out UInt64 lpTotalNumberOfBytes,
out UInt64 lpTotalNumberOfFreeBytes);
第三步、调用这个函数:
ulong freeBytesAvailable = 0;
ulong totalNumberOfBytes = 0;
ulong totalNumberOfFreeBytes = 0;
GetDiskFreeSpaceEx("c://",
out freeBytesAvailable,
out totalNumberOfBytes,
out totalNumberOfFreeBytes);
ulong totalNumberOfBytes = 0;
ulong totalNumberOfFreeBytes = 0;
GetDiskFreeSpaceEx("c://",
out freeBytesAvailable,
out totalNumberOfBytes,
out totalNumberOfFreeBytes);
相关阅读