我遇到了一些目录操作问题。
问题是我有一个数据存档需要根据一系列约束添加或清除备份数据。作为问题的约束是存档只需要保留前一周的备份。
因此,当您列出您可以采取的步骤时:
问题是,当你尝试保持代码简单和实现时,你创建了一些感觉不适合的代码。
string[] archiveFiles = Directory.GetFiles(
Archive, @"*.*", SearchOption.TopDirectoryOnly);
foreach(string archive in archiveFiles)
File.Delete(archive);
因此,如果您尝试使用Directory.GetFiles()
抓取文件,并且根据文档没有返回值:
返回值类型:System.String []全名数组 (包括路径)指定匹配的目录中的文件 指定的搜索模式和选项,如果没有文件则为空数组 找到了。
如果它在数组中返回null
那么实际上循环会迭代一次,这是一个错误。如果它返回一个没有元素的数组,那么它将忽略循环。第二个是我认为它做的,这使得这种方法感觉不正确。
我唯一能做的就是使用File.Copy()
,因为它可以覆盖文件,这可以避免这种方法,但即便如此,也可能成为那个空阵列同样的两难困境。
这是Directory.GetFiles()
的正确用法和方法,还是有更好的方法?
答案 0 :(得分:1)
如果它在数组中返回null,那么实际上会有 循环迭代一次,一个错误。如果它返回一个没有元素的数组 然后它会忽略循环。第二个是我相信它的作用, 这使得这种方法感觉不正确。
如果没有匹配的文件,列表将为空,则不会为空(有多少空值应返回空目录?)。
因此您的删除代码将不会被执行。对我有意义。
如果您需要删除旧文件,请复制您可能希望首先将旧文件移动到安全位置的新文件,然后复制新文件,然后删除旧文件。
也许我在这里没有理解这个问题,但我没有看到任何问题。我希望实际代码有一些尝试捕获。