我试图获取硬盘驱动器的名称或字母,但是仍然很困惑,因为这里有几个可以使用的功能。 下面的三个代码获得硬盘驱动器号有什么区别?哪个更好用?
Directory.GetLogicalDrives()
Environment.GetLogicalDrives()
DriveInfo.GetDrives()
答案 0 :(得分:3)
他们都调用此代码,这只是 Win32 API GetLogicalDrives function
的包装new EnvironmentPermission(PermissionState.Unrestricted).Demand();
int drives = Win32Native.GetLogicalDrives();
if (drives == 0)
__Error.WinIOError();
uint d = (uint)drives;
int count = 0;
while (d != 0)
{
if (((int)d & 1) != 0) count++;
d >>= 1;
}
String[] result = new String[count];
char[] root = new char[] { 'A', ':', '\\' };
d = (uint)drives;
count = 0;
while (d != 0)
{
if (((int)d & 1) != 0)
{
result[count++] = new String(root);
}
d >>= 1;
root[0]++;
}
return result;
// Directory.GetLogicalDrives demands unmanaged code permission
String[] drives = Directory.GetLogicalDrives();
DriveInfo[] di = new DriveInfo[drives.Length];
for(int i=0; i<drives.Length; i++)
di[i] = new DriveInfo(drives[i]);
return di;
答案是,没有明显的差异
参考
答案 1 :(得分:0)
documentation would suggest这三种方法提供了相同的信息。似乎只有DriveInfo.GetDrives()会建议您提供更多的信息,但是如果您只需要知道实际的字母,那么前两个字母就足够了。