[Qt][Linux]列出驱动器或分区
[Qt][Linux] List drive or partitions
如何使用qt列出驱动器或挂载的分区?我尝试使用:
foreach( QFileInfo drive, QDir::drives() )
{
qDebug() << "Drive: " << drive.absolutePath();
}
但是它只显示根驱动器。我还注意到QDir::drives()的长度是1,但QDir::drives是4.
您可以使用/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;
}
我的机器上的输出:
("/"、"/proc"、"/sys"、"/sys/fs/cgroup"、"/sys/fs/fuse/连接"、"/sys/内核调试","/sys/内核/安全"、"/dev"、"/dev/pts","/"、"/运行/锁","/跑步/shm"、"/运行/用户","/媒体/sf_C_DRIVE"、"/媒体/sf_C_DRIVE"、"/媒体/sf_D_DRIVE"、"/运行/user/ri/养狐业")
注意,QFile::atEnd()
对于这个文件总是返回true,所以我没有在我的代码中使用它。
QDir::Drives
为4。它是enum item的静态整数值,它不显示任何东西,在大多数情况下你不应该关心它。QDir::drives()
在Linux上执行时只包含一个项目(对于根文件系统)。
需要使用特定于平台的代码。还有,请阅读文档!
返回当前系统的根目录列表。
在Windows上,它返回一个包含"C:/", "D:/"等QFileInfo对象的列表。在其他操作系统上,它返回一个只包含一个根目录的列表。"/")。
Qt 5.4+
您可以在Qt 5.4+中使用QStorageInfo
类,如下所示:
foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {
if (storage.isValid() && storage.isReady()) {
if (!storage.isReadOnly()) {
// ...
}
}
}
更多信息
相关文章:
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 在QTreeView中仅显示共享驱动器和文件夹
- 按字母顺序对C++问题中的子字符串索引进行分区
- 如何查找集合的所有分区 (C++)
- librdkafka:rd_kafka_assignment 返回分配分区的偏移量 -1001
- 使用指针在分区函数中实现随机分区点
- Coursera DSA 算法工具箱第 4 周第 2 个问题 - 分区纪念品
- 迭代器范围的平衡分区,没有LegacyRandomAccessIterator
- 对多个(可能)重叠范围进行分区的最简单算法
- 如何在MacOS(sierra-catalina)上获取分区的可用空间
- 并行快速排序分区中的隔离错误
- QT MYSQL 驱动器构建,未定义对"mysql_get_client_version@0"的引用
- C++年分区综述
- 实现 3 路分区以实现快速排序
- 驱动器/分区和Windows API中唯一的驱动器ID
- 使用 CreateFile 访问驱动器分区
- 如何在没有 Windows 分配驱动器号的情况下创建分区
- [Qt][Linux]列出驱动器或分区
- 如何使用C++将包含多个分区的映像写入Windows上的USB闪存驱动器