我正在尝试在 Visual Studio 中使用 C# 和 Windows 窗体构建一个简单的应用程序。我想首先扫描可用的驱动器,看看其中是否有带有包含图像的 DCIM 文件夹的手机或设备。
到目前为止,我已经找到了许多有关列出计算机上驱动器的指南,但我想迭代它们并根据这些指南选择哪些是可见的。如果这是最好的方法,我可以运行 PowerShell 脚本来获取数据 - 只要它最终有效。
此外,我不清楚哪种类型的表单元素最适合用来显示结果数据。如果可能的话,我希望列出找到的文件夹的名称/路径以及显示设备类型的小图形(有点像 Windows 10 中的“这台电脑”视图的功能。
可以通过
DriveInfo.GetDrives方法获取
Drives
,Directory.GetFiles 方法获取
Files
// Get drivers that have `DCIM` folder
List<string> drivesLetter = DriveInfo.GetDrives()
.Where(d => Directory.Exists(Path.Combine(d.Name, "DCIM")))
.Select(d => d.Name.Replace("\\", ""))
.ToList();
// List files
foreach (string driver in drivesLetter)
{
string dcimPath = Path.Combine(driver, "DCIM");
// List files by dcimPath
}
我正在使用 MediaDevices NuGet 包。
有了这个,我使用这个代码:
var devices = new List<MediaDevice>();
foreach (var device in MediaDevice.GetDevices())
if (device.SupportedContentTypes(ContentType.Image))
foreach (var drive in device.GetDrives())^
if (drive.RootDirectory.EnumerateDirectories().ToList().Find(f => f.Name.ToUpper() == "DCIM") != null
&& !devices.Contains(device))
devices.Add(device);
MediaDevice.FriendlyName
显示名称
MediaDevice.FriendlyName + Path.DriveSeparator + MediaDevice.RootDirectory.FullName
显示路径
MediaDevice.DeviceType
显示类型(例如Phone
)