需要使用递归查找文件的大小

时间:2013-12-11 15:34:46

标签: java

具有一个File参数的方法。如果它是目录,则该方法返回其下所有文件的总大小(字节数)。如果参数表示文件,则该方法只返回该文件的大小。返回值应为long类型(这是一种整数,其值范围大于int)。要确定由File对象表示的文件的大小,请使用File类的length()方法(此方法不适用于目录,只适用于文件)。

非常感谢任何帮助!无法想象这一点。感谢。

1 个答案:

答案 0 :(得分:1)

鉴于这是家庭作业,我不会直接给你答案。

如果方法调用自身的机制,则递归。显然,如果一个方法不确定地执行此操作,您最终会得到一个stackoverflow异常,因此您需要某种退出条件,该方法会停止调用自身。

在你的情况下,退出条件是你遇到一个文件,所以你将拥有类似这样的代码:

int size(file)
{
  if file represents a directory
  {

    loop over contents of the directory calling size method with each item and sum the return values

    return the sum

  }
  else file represents a file
  {

    return file size

  }
}

当这样的程序运行时,每个调用都被添加到堆栈中,因此在您具有以下文件结构的情况下:

+ root
  + directory 1
    + file 1
    + file 2
  + file 3

您的筹码将遵循以下模式:

                                  size(file1)                           size(file2)
            -> size(directory) -> size(directory) -> size(directory) -> size(directory) -> size(directory) ->            -> size(file3) ->
size(root)     size(root)         size(root)         size(root)         size(root)         size(root)         size(root)    size(root)     size(root)

希望这向您展示一般方法,我将留给您转换为Java。

相关问题