从指定的数码相机获取文件
本文关键字:获取 文件 数码相机 | 更新日期: 2023-09-27 18:36:40
我想复制然后从我的数码相机中删除图像。有3个数码相机通过USB连接到PC。
电脑会看到这些设备,并将其添加为驱动器。我可以从驱动器复制图像,只是我必须知道我从中复制图像。相机的驱动器可以改变。这取决于哪个相机将被读取并更早地添加到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
识别相机本身将更加复杂。只有你会确切地知道如何识别它们,但我建议通过System.Management
使用WMI
。这是一篇演示ManagementObjectSearcher
类的文章,您可以在其中通过某些属性(例如GUID
,Name
等)在USB上查找数码相机。如果我没记错的话,你会这样初始化它:
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
}
}
}