经常碰到这样的需求,比如你需要保存一个文件到一个目录里去,这个目录或许是用户指定的目录,那么你就需要确保这个目录是否有效的,这样就需要去测试这个目录是否允许写文件?这个目录是否存在?这个目录是否可写的?或者这个目录是否网络上的目录?要完成这个任务,就得使用函数 GetDriveType 来完成。 GetDriveType 函数可以获取目录和盘号的属性。 函数 GetDriveType 声明如下: WINBASEAPI UINT WINAPI GetDriveTypeA( __in_opt LPCSTR lpRootPathName ); WINBASEAPI UINT WINAPI GetDriveTypeW( __in_opt LPCWSTR lpRootPathName ); #ifdef UNICODE #define GetDriveType GetDriveTypeW #else #define GetDriveType GetDriveTypeA #endif // !UNICODE lpRootPathName 是目录或盘号的名称。 返回值是目录的属性,有如下值: DRIVE_UNKNOWN DRIVE_NO_ROOT_DIR DRIVE_REMOVABLE DRIVE_FIXED DRIVE_REMOTE DRIVE_CDROM DRIVE_RAMDISK 调用函数的例子如下: #001 // 获取目录或磁盘的属性。 #002 // 蔡军生 2007/10/30 QQ:9073204 深圳 #003 void Disk(void) #004 { #005 // 获取 C: 目录的属性。 #006 std::wstring strTest(_T("C://WINDOWS//")); #007 UINT nRes = ::GetDriveType(strTest.c_str()); #008 switch(nRes) #009 { #010 case DRIVE_UNKNOWN: #011 OutputDebugString(_T("DRIVE_UNKNOWN/r/n")); #012 break; #013 case DRIVE_NO_ROOT_DIR: #014 OutputDebugString(_T("DRIVE_NO_ROOT_DIR/r/n")); #015 break; #016 case DRIVE_REMOVABLE: #017 OutputDebugString(_T("DRIVE_REMOVABLE/r/n")); #018 break; #019 case DRIVE_FIXED: #020 OutputDebugString(_T("DRIVE_FIXED/r/n")); #021 break; #022 case DRIVE_REMOTE: #023 OutputDebugString(_T("DRIVE_REMOTE/r/n")); #024 break; #025 case DRIVE_CDROM: #026 OutputDebugString(_T("DRIVE_CDROM/r/n")); #027 break; #028 case DRIVE_RAMDISK: #029 OutputDebugString(_T("DRIVE_RAMDISK/r/n")); #030 break; #031 default: #032 break; #033 } #034 #035 // 判断盘号是否光驱。 #036 strTest = _T("d://"); #037 nRes = ::GetDriveType(strTest.c_str()); #038 switch(nRes) #039 { #040 case DRIVE_UNKNOWN: #041 OutputDebugString(_T("DRIVE_UNKNOWN/r/n")); #042 break; #043 case DRIVE_NO_ROOT_DIR: #044 OutputDebugString(_T("DRIVE_NO_ROOT_DIR/r/n")); #045 break; #046 case DRIVE_REMOVABLE: #047 OutputDebugString(_T("DRIVE_REMOVABLE/r/n")); #048 break; #049 case DRIVE_FIXED: #050 OutputDebugString(_T("DRIVE_FIXED/r/n")); #051 break; #052 case DRIVE_REMOTE: #053 OutputDebugString(_T("DRIVE_REMOTE/r/n")); #054 break; #055 case DRIVE_CDROM: #056 OutputDebugString(_T("DRIVE_CDROM/r/n")); #057 break; #058 case DRIVE_RAMDISK: #059 OutputDebugString(_T("DRIVE_RAMDISK/r/n")); #060 break; #061 default: #062 break; #063 } #064 }
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow