C# 访问媒体文件的属性后如何处理媒体文件?

C# 访问媒体文件的属性后如何处理媒体文件?,c#,winforms,C#,Winforms,我需要访问至少100个媒体文件(视频)并检查它们的属性。例如,修改日期,相机型号/制造商,如果我完成了,我需要处理/发布这些媒体文件。是否有media.Dispose()方法 我需要文件。移动,而不是文件。复制 我有两种可能的解决方案: 1-除非出于某种原因需要导入Shell程序集,否则我不明白为什么不能只使用DirectoryInfo/FileInfo对象:即 foreach (var file in new DirectoryInfo(@"C:\VideoFolder").G

我需要访问至少100个媒体文件(视频)并检查它们的属性。例如,修改日期,相机型号/制造商,如果我完成了,我需要处理/发布这些媒体文件。是否有media.Dispose()方法


我需要文件。移动,而不是文件。复制

我有两种可能的解决方案:

1-除非出于某种原因需要导入Shell程序集,否则我不明白为什么不能只使用
DirectoryInfo
/
FileInfo
对象:即

        foreach (var file in new DirectoryInfo(@"C:\VideoFolder").GetFiles())
        {
            //Get the file information that you need here...
            var creationTime = file.CreationTime;
            //Move the file
            file.MoveTo(@"C:\Trash\");
        }
2-如果出于某种原因必须保持代码不变,为什么不直接移动文件(它已经是
FileInfo
对象)?即 而不是这一行:

File.Move(stringFullFileName, newPath); //It says "The process cant access the file  
请注意:

files.Move(newPath);

我为您提供了两种可能的解决方案:

1-除非出于某种原因需要导入Shell程序集,否则我不明白为什么不能只使用
DirectoryInfo
/
FileInfo
对象:即

        foreach (var file in new DirectoryInfo(@"C:\VideoFolder").GetFiles())
        {
            //Get the file information that you need here...
            var creationTime = file.CreationTime;
            //Move the file
            file.MoveTo(@"C:\Trash\");
        }
2-如果出于某种原因必须保持代码不变,为什么不直接移动文件(它已经是
FileInfo
对象)?即 而不是这一行:

File.Move(stringFullFileName, newPath); //It says "The process cant access the file  
请注意:

files.Move(newPath);

为什么不在有问题的
文件中使用
using
语句?这样,您就可以直接使用FileInfo对象,它应该在使用结束时处理?但我需要访问这些视频属性,如创建/修改日期…等等。在图像文件中,它很简单,但在视频文件中,我认为它需要不同的方法。因此,您尝试循环浏览目录中的文件列表,同时获取每个文件上的数据,然后移动文件并继续,对吗?是的,正确。在获取该文件上的数据后,我需要将其移动到新目录中。我仍然不明白为什么您不能仅使用简单的FileInfo/DirectoryInfo,例如:
foreach(新DirectoryInfo(@“C:\VideoFolder”).GetFiles(){var creationTime=file.creationTime;file.MoveTo(@“C:\Trash\”);}
为什么不使用
using
语句来处理所讨论的
文件
呢?这样你就可以直接处理FileInfo对象,它应该在使用结束时进行处理?但我需要访问这些视频属性,如创建/修改日期等。在图像文件中,它很简单,但在视频文件中,我认为需要不同的方法o、 您试图循环浏览目录中的文件列表,同时获取每个文件上的数据,然后移动文件并继续,对吗?是的,这是正确的。在获取数据后,我需要将该文件移动到新目录中。我仍然不明白为什么您不能仅使用简单的FileInfo/DirectoryInfo,例如:
foreach(新目录信息中的var文件(@“C:\VideoFolder”).GetFiles(){var creationTime=file.creationTime;file.MoveTo(@“C:\Trash\”);}
我尝试了您建议的方法,得到了相同的错误“IOException”。这是因为,在获取文件上的数据后,视频文件本身将被动态重命名。视频已从MOV_1重命名为MyMOV_01。这就是为什么我需要在将此视频文件移动到新位置之前处理它。我尝试了您建议的方法,但遇到了相同的错误“IOException”。这是因为,在获取文件上的数据后,视频文件本身将被动态重命名。视频已从MOV_1重命名为MyMOV_01。这就是为什么我需要在将此视频文件移动到新位置之前处理它