是否可以确定驱动器路径(例如P:/ temp / foo)是本地还是远程?
这里(CMD line to tell if a file/path is local or remote?)显示了cmd评估,但我正在寻找C ++ / Qt方式。
相关:
答案 0 :(得分:3)
在Qt中没有办法,至少达到Qt 5.5。 QStorageInfo是最接近的,但是没有就这样的API应该是什么样子达成一致(参见开始的巨大讨论in this thread; Qt报告误导信息基本上有一个风险。)
因此,现在,您可以使用本机API。前面提到的GetDriveType适用于Windows,但你在Linux和Mac上几乎都是自己的。
答案 1 :(得分:2)
您可以使用GetDriveType函数:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364939(v=vs.85).aspx
答案 2 :(得分:1)
我最近针对以下确切问题提出了功能要求:https://bugreports.qt.io/browse/QTBUG-83321
那里出现了一个可能的解决方法。使用以下枚举:
enum DeviceType {
Physical,
Other,
Unknown
};
我可以使用以下功能在Linux,Windows和macOS上可靠地将挂载检查为本地设备或其他东西(可能是网络挂载):
DeviceType deviceType(const QStorageInfo &volume) const
{
#ifdef Q_OS_LINUX
if (QString::fromLatin1(volume.device()).startsWith(QLatin1String("/"))) {
return DeviceType::Physical;
} else {
return DeviceType::Other;
}
#endif
#ifdef Q_OS_WIN
if (QString::fromLatin1(volume.device()).startsWith(QLatin1String("\\\\?\\Volume"))) {
return DeviceType::Physical;
} else {
return DeviceType::Other;
}
#endif
#ifdef Q_OS_MACOS
if (! QString::fromLatin1(volume.device()).startsWith(QLatin1String("//"))) {
return DeviceType::Physical;
} else {
return DeviceType::Other;
}
#endif
return DeviceType::Unknown;
}