0

我想复制然后删除我的数码相机中的图像。有 3 个数码相机通过 USB 连接到电脑。

电脑会看到这些设备并将它们添加为驱动器。我可以从驱动器复制图像,只是我必须知道我从哪里复制图像。相机的驱动可以改变。这取决于将读取哪个相机并将其添加到PC。

我应该如何识别相机并从中复制文件。

4

1 回答 1

0

将它们作为可移动磁盘来处理它们相对容易,首先使用以下方法找到可移动磁盘DriveInfo

// Find removable disks
var drives = DriveInfo.GetDrives().Where(x => x.DriveType == DriveType.Removable && x.IsReady);

List<FileInfo[]> pictureHandles = new List<FileInfo[]>();

// Find all files of a certain type on each drive
foreach(var drive in drives)
{
    pictureHandles.Add(
                new DirectoryInfo(drive.Name)
                .GetFiles("*.jpg",SearchOption.AllDirectories)
                .ToArray());
}

// Do stuff with pictureHandles and identify
// which drive is which camera using System.Management

识别摄像机本身将更加复杂。只有你会确切地知道如何识别它们,但我建议使用WMIvia System.Management是一篇演示ManagementObjectSearcher该类的文章,您可以在其中通过某些属性(例如 、 等)在 USB 上查找数码相机GUIDName如果我没记错的话,您可以像这样初始化它:

var searcher = new ManagementObjectSearcher("SELECT * FROM WIN32_USB");

然后遍历,

foreach(var device in searcher.Get())

并检查属性:

if(device["Name"].ToString().Equals("My Digital Camera"))

最后,当你对文件做了任何你想做的事情时,你可以像这样删除它们:

foreach(FileInfo[] files in pictureHandles)
{
    for (int i = 0; i < files.Length; i++)
    {
        try 
        { 
            File.Delete(files[i].FullName); 
        }
        catch(Exception ex)
        {
            // Failed to delete
        }
    }
}
于 2013-10-24T17:38:12.227 回答