古怪的目录

时间:2014-05-23 19:07:45

标签: c# .net

我遇到了一些目录操作问题。

问题是我有一个数据存档需要根据一系列约束添加或清除备份数据。作为问题的约束是存档只需要保留前一周的备份。

因此,当您列出您可以采取的步骤时:

  • 检查目录是否存在。
  • 抓住文件。
  • 然后清除它们。
  • 然后将下一周移至目录。

问题是,当你尝试保持代码简单和实现时,你创建了一些感觉不适合的代码。

string[] archiveFiles = Directory.GetFiles(
     Archive, @"*.*", SearchOption.TopDirectoryOnly);

foreach(string archive in archiveFiles)
     File.Delete(archive);

因此,如果您尝试使用Directory.GetFiles()抓取文件,并且根据文档没有返回值:

  

返回值类型:System.String []全名数组   (包括路径)指定匹配的目录中的文件   指定的搜索模式和选项,如果没有文件则为空数组   找到了。

如果它在数组中返回null那么实际上循环会迭代一次,这是一个错误。如果它返回一个没有元素的数组,那么它将忽略循环。第二个是我认为它做的,这使得这种方法感觉不正确。

我唯一能做的就是使用File.Copy(),因为它可以覆盖文件,这可以避免这种方法,但即便如此,也可能成为那个空阵列同样的两难困境。

这是Directory.GetFiles()的正确用法和方法,还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

  

如果它在数组中返回null,那么实际上会有   循环迭代一次,一个错误。如果它返回一个没有元素的数组   然后它会忽略循环。第二个是我相信它的作用,   这使得这种方法感觉不正确。

如果没有匹配的文件,列表将为空,则不会为空(有多少空值应返回空目录?)。

因此您的删除代码将不会被执行。对我有意义。

如果您需要删除旧文件,请复制您可能希望首先将旧文件移动到安全位置的新文件,然后复制新文件,然后删除旧文件。

也许我在这里没有理解这个问题,但我没有看到任何问题。我希望实际代码有一些尝试捕获。