我想复制然后删除我的数码相机中的图像。有 3 个数码相机通过 USB 连接到电脑。
电脑会看到这些设备并将它们添加为驱动器。我可以从驱动器复制图像,只是我必须知道我从哪里复制图像。相机的驱动可以改变。这取决于将读取哪个相机并将其添加到PC。
我应该如何识别相机并从中复制文件。
将它们作为可移动磁盘来处理它们相对容易,首先使用以下方法找到可移动磁盘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
识别摄像机本身将更加复杂。只有你会确切地知道如何识别它们,但我建议使用WMI
via System.Management
。这是一篇演示ManagementObjectSearcher
该类的文章,您可以在其中通过某些属性(例如 、 等)在 USB 上查找数码相机GUID
。Name
如果我没记错的话,您可以像这样初始化它:
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
}
}
}