具有一个File参数的方法。如果它是目录,则该方法返回其下所有文件的总大小(字节数)。如果参数表示文件,则该方法只返回该文件的大小。返回值应为long
类型(这是一种整数,其值范围大于int
)。要确定由File对象表示的文件的大小,请使用File类的length()
方法(此方法不适用于目录,只适用于文件)。
非常感谢任何帮助!无法想象这一点。感谢。
答案 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。