古怪的目录

本文关键字: | 更新日期: 2023-09-27 18:04:54

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

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

所以当你制定步骤时,你会假设:

  • 检查目录是否存在
  • 然后清除它们。
  • 然后将下一周移动到目录中。

问题是,当你试图保持代码的简单和实现时,你创建的一些代码感觉不像是正确的实践。

string[] archiveFiles = Directory.GetFiles(
     Archive, @"*.*", SearchOption.TopDirectoryOnly);
foreach(string archive in archiveFiles)
     File.Delete(archive);

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

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

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

我唯一能做的就是使用File.Copy(),因为它可以覆盖文件,这将避免这种方法,但即使这样也可能受到空数组的相同困境的影响。

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

古怪的目录

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

如果没有匹配的文件列表将是空的,那么列表中将不会有null(多少个null应该返回一个空目录?)

所以你的删除代码将不会被执行。对我来说很有意义。

如果需要删除旧文件,则复制新文件,您可能需要先将旧文件移到安全的地方,然后复制新文件,然后删除旧文件。

也许我没有理解这里的问题,但是我没有看到任何问题。我希望实际的代码有一些try catch
相关文章:
  • 没有找到相关文章