2013-12-11 40 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。