2013-12-11 38 views
-3

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

真的很感激任何帮助!看不出来。谢谢。

+5

显示您到目前为止所尝试的内容。如果它不起作用就没问题,那就是SO的目的。它可以帮助人们更好地了解你错过的东西,并且能够指引你朝着正确的方向前进。 – FatalError

+0

@FatalError它只是一个作业问题 –

+0

freelancer.com并为您的家庭工作付出财富。 – Makky

回答

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。