如何扫描可用的移动设备并仅列出具有 DCIM 文件夹的移动设备?

问题描述 投票:0回答:2

我正在尝试在 Visual Studio 中使用 C# 和 Windows 窗体构建一个简单的应用程序。我想首先扫描可用的驱动器,看看其中是否有带有包含图像的 DCIM 文件夹的手机或设备。

到目前为止,我已经找到了许多有关列出计算机上驱动器的指南,但我想迭代它们并根据这些指南选择哪些是可见的。如果这是最好的方法,我可以运行 PowerShell 脚本来获取数据 - 只要它最终有效。

此外,我不清楚哪种类型的表单元素最适合用来显示结果数据。如果可能的话,我希望列出找到的文件夹的名称/路径以及显示设备类型的小图形(有点像 Windows 10 中的“这台电脑”视图的功能。

c# windows filesystems smartphone mobile-devices
2个回答
1
投票

可以通过

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
}

0
投票

我正在使用 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

© www.soinside.com 2019 - 2024. All rights reserved.