【问题标题】:Deleted file still appears in Directory.GetFiles result删除的文件仍然出现在 Directory.GetFiles 结果中
【发布时间】:2011-06-23 14:10:47
【问题描述】:

我有两个网络方法。第一个是:

void deleteFile(string filePath)
{
  File.Delete(filePath);
}

另一个是:

string[] getAllFile()
{
  // at the same folder....
  Directory.GetFiles("*.xml");
  .....
  return ....   
}

我这样调用这些方法:

deleteFile("1.xml")
getAllFile();

尽管删除了“1.xml”文件,对Directory.GetFiles("*.xml"); 的调用仍会在结果中返回“1.xml”。也就是说,它似乎没有被删除。

然后,当我循环结果时,尝试读取文件,得到 FileNoFoundException

【问题讨论】:

  • 对不起,我的意思是,我已经删除了该文件,但是,它已被目录搜索。getfiles("*.xml");
  • @Scott:你的意思是你打算删除文件,但调用 getfiles 时它似乎没有被删除?
  • 嗨@Scott,您可能希望编辑您的问题以使其更清晰。我是否说得对,即使您调用了 deleteFile("1.xml"),getAllFile() 仍然在找到“1.xml”?
  • 我认为他的意思是在他调用 File.delete() 删除文件后该文件仍然显示。 File.delete() 方法并不能保证它会立即删除文件,所以它是有意义的。
  • @0A0D 谢谢!是的,当您调用 getfiles 时,它似乎没有被删除。

标签: c#


【解决方案1】:

我发现 DirectoryInfo/FileInfo 类并不总是更新。在这些情况下,您需要在 Directory/File 实例上调用 Refresh 方法。

【讨论】:

  • 你的意思到底是什么?我在DirectoryInfo 上调用了Refresh(),从GetFiles() 调用了每个FileInfo,从GetDirectories() 调用了每个DirectoryInfo。尽管如此,GetFiles.Length 仍会返回已删除文件的计数。
【解决方案2】:

我不知道,但我怀疑您的网络方法的结果被缓存在某个地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2015-10-16
    • 2019-04-21
    相关资源
    最近更新 更多