在条件下递归遍历目录结构

时间:2015-09-21 13:11:28

标签: java file file-io nio

我几乎从未使用过Java中的文件,现在正试图找到遍历目录结构的解决方案。

我有这样的结构:\uploaded\abc\Uncle Bob\Another Dir\Hello-123。 这里Hello-123包含任何类型的文件,可能包含更多子目录。

现在我将开始步行的\uploaded\abc\的起始路径。在此之后,总会有2个目录,可能一直都是,所以这将是最大的深度(在“另一个目录”之后)。

目标:找到与输入匹配的目录,并仅上传该目录(或子目录)中的所有文件。

示例:给定输入 Hello-123 我想从开始路径开始遍历所有目录(可能只允许深度+2超过它?)并执行某些操作在处理完每个文件后,该目录中的所有文件(如果找到)都会终止该过程。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

这看起来像是家庭作业所以我会回答建议而不是代码。

遍历文件或其他树结构是一个递归过程。

首先,您要考虑如何编写递归方法。你要采取行动的是一个目录,所以该方法可能希望将其作为参数传递给它。您还需要考虑返回类型。递归方法是否只是找到并返回Hello-123目录,或者它会自己采取行动 - 即您希望代码在哪里负责"做某事&# 34。

接下来你需要考虑你的基本情况;您的方法何时决定是采取任何行动还是自行调用。

您的基本案例在我看来就像;

  • 找到了您要查找的目录(Hello-123
  • 达到允许深度(您提到允许在起始目录下方的深度为2)
  • 达到最大深度(目录没有子目录)

如果满足任何这些基本情况,您可能希望将某些内容返回到调用堆栈或执行某些操作。仔细考虑一下你可能会回归的东西。如果没有达到这些情况,你可能想知道如何进一步递归。