0

我正在使用 Visual Studio 2012 在 Windows 8 RTM(禁用 UAC)上的 .NET 4.0 中开发 Windows 窗体应用程序。我当前的问题是,当我使用 WebClient 下载文件并在完成下载后尝试访问它时,File.Exists 显示为 false . 如果我打开 Windows 资源管理器,该文件存在并且超过 10MB。例如,它是一个视频文件,如果我尝试通过 ffmpeg 转换它,ffmpeg 显示它找不到文件 C:\.... 但是如果我复制该路径并将其粘贴到资源管理器中,它会打开视频. 出了什么问题?“以管理员身份运行”没有帮助。这是代码。

String video = Path.Combine(Environment.CurrentDirectory, "tempVideo.mp4");
WebClient downloader = new WebClient();
downloader.DownloadFile(new Uri("http://someurl/somevideo.mp4"), video); //download is successfull
FileInfo dlVideo = new FileInfo(video);
if(dlVideo.Exists) //always false, File.Exists(video) also false
{
//Some other actions on file
}
4

2 回答 2

0

最后我发现了问题,非常愚蠢和尴尬。代码示例非常简单,因为我的整个抽象类都会解决这个问题。在我的抽象基类的某个地方,扩展被添加了两次,所以输出文件是 tempVideo.mp4.mp4 。Windows 资源管理器似乎忽略了扩展名,因此它是打开文件的唯一程序。

于 2012-09-23T15:50:50.370 回答
0

在 Windows 7 中,从 Web 下载的文件默认被阻止,必须解除阻止才能通过外部程序访问它们:

在 Windows 8 中可能是相同的。至于通过代码解除阻止:
Unblock File from within .net 4 c#

于 2012-09-23T15:23:10.023 回答