我编写了一个从其位置删除文件的函数。代码如下所示:
if (File.Exists(strPath + "/FLV/" + flvvideoname))
{
File.Delete(strPath + "/FLV/" + flvvideoname);
}
'strPath'是目录的路径。代码执行后,文件并不总是被删除。反复运行相同的代码将删除该文件。当我解决此问题时,断点不会超过文件删除行,我也没有看到任何错误。如果断点使其超过文件删除行,则表示文件已被正确删除。
如何解决此问题?
答案 0 :(得分:1)
有时可能无法释放文件创建的句柄。尝试拨打
GC.Collect();
GC.WaitForPendingFinalizers();
删除前。
另请查看此SO问题:Delete a file being used by another process。
编辑:
除了调用GC.Collect()之外(由于Boas Enker指出的原因),您可能希望在循环中等待文件 - like this。
答案 1 :(得分:0)
我确定问题不在文件删除中。可能是当您从数据库中检索Filename或动态设置某个变量时,您不是在第一页加载中执行此操作,而是在回发时执行此操作。因此,如果要动态检索文件名,请执行下一步:
if (!IsPostBack){//function for retrieving data from database
//your_variable = some_value;
}