【发布时间】:2017-11-12 17:09:48
【问题描述】:
如何在 C++ 中获取逻辑驱动器列表?我知道 C# 中的 Windows 是一个函数System.IO.DriveInfo.GetDrives(),但这是 Windows 唯一的解决方案。有什么多平台方式吗?我浏览了 Boost::Filesystem 文档,但一无所获。
【问题讨论】:
-
其他平台不一定有驱动的概念。
-
这是针对仅 Windows 问题的仅 Windows 解决方案。
-
请准确地定义您所说的“逻辑驱动器”是什么意思。如果你的意思是我认为你的意思,那么那些根本不存在于 Windows(和 Windows 克隆,如 ReactOS)和一些从 CP/M 演变或受其启发的小众系统上,所以根本不可能是一种适用于非 Windows 系统的多平台方式。例如。 macOS、Linux、BSD、Unix、BeOS、i/OS、OS/390 等都没有这个概念。
-
当您得知其他操作系统根本没有任何与此驱动器号概念等效的东西时会感到震惊,这种概念可以追溯到(前)MS-DOS 时代。那是因为其他操作系统当然不是从 MS-DOS 演变而来的,因此不必承受它的遗留问题。因此,没有“多平台”解决方案,因为首先没有什么需要解决的。
-
对不起,你可能误解了我的意思。我需要获得驱动器/卷的“入口点”。在 Linux 中这是 /run/media/USER/drive-name (Fedora),在 Windows 中是驱动器号(例如 C:\)。我不知道这在 macOS 上如何(它类似于 Linux 吗?)。我只需要挂载的卷。
标签: c++ multiplatform