C++ [Qt][Linux]列出驱动器或分区
如何使用qt列出驱动器或已装入的分区? 我尝试使用:C++ [Qt][Linux]列出驱动器或分区,c++,linux,qt,qt5,qdir,C++,Linux,Qt,Qt5,Qdir,如何使用qt列出驱动器或已装入的分区? 我尝试使用: foreach( QFileInfo drive, QDir::drives() ) { qDebug() << "Drive: " << drive.absolutePath(); } foreach(QFileInfo驱动器,QDir::drives()) { qDebug()您需要使用特定于平台的代码。并且,请 返回此系统上根目录的列表 在Windows上,它返回包
foreach( QFileInfo drive, QDir::drives() )
{
qDebug() << "Drive: " << drive.absolutePath();
}
foreach(QFileInfo驱动器,QDir::drives())
{
qDebug()您需要使用特定于平台的代码。并且,请 返回此系统上根目录的列表 在Windows上,它返回包含“C:/”和“D:/”等的QFileInfo对象列表。在其他操作系统上,它返回仅包含一个根目录(即“/”)的列表。
您可以使用
/etc/mtab
文件获取装载点列表
QFile file("/etc/mtab");
if (file.open(QFile::ReadOnly)) {
QStringList mountpoints;
while(true) {
QStringList parts = QString::fromLocal8Bit(file.readLine()).trimmed().split(" ");
if (parts.count() > 1) {
mountpoints << parts[1];
} else {
break;
}
}
qDebug() << mountpoints;
}
QFile文件(“/etc/mtab”);
if(file.open(QFile::ReadOnly)){
QStringList山点;
while(true){
QStringList parts=QString::fromLocal8Bit(file.readLine()).trimmed().split(“”);
如果(parts.count()>1){
安装点Qt 5.4+
您可以使用qt5.4+中的QStorageInfo
类,如下所示:
foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {
if (storage.isValid() && storage.isReady()) {
if (!storage.isReadOnly()) {
// ...
}
}
}
我没有注意到这在Linux上被忽略。但我仍然找不到任何与root不同的分区/磁盘。请您告诉我应该在哪里查找。在Linux下,您可以使用getmntent
和朋友打开/etc/mtab
并分析其中的信息。谢谢,我希望如此mething没有访问文件的权限,但对我来说已经足够好了:)对普通用户程序使用/etc/mtab
,而不是/proc/mounts
。/proc/mounts
按时间顺序列出所有挂载点,甚至那些被覆盖的挂载点——正如您所看到的,在您的情况下,/
会被报告两次!这些信息只对sy有用stem程序。而且,如果装载点的名称中有空格,那么这将非常糟糕,因为它不能正确处理空格转换(琐事:你在/etc/mtab
或/proc/mounts
中得到了什么?回答:在中搜索“空格”)。正如我在回答中所说,你真的需要使用getmnent
。