Recursive methods are efficient for solving problems with recursive structures. The preceding examples can easily be solved without using recursion. This section presents a problem that is difficult to solve without using recursion. The problem is to find the size of a directory. The size of a directory is the sum of the sizes of all files in the directory. A directory d may contain subdirectories. Suppose a directory contains files f1, f2, ... , fm and subdirectories d1, d2, ... , dn, as shown in Figure below.
The size of the directory can be defined recursively as follows:
size(d) = size(f1) size(f2) ... size(fm) size(d1) size(d2) ... size(dn)
The File class can be used to represent a file or a directory and obtain the properties for files and directories. Two methods in the File class are useful for this problem:
The code below gives a program that prompts the user to enter a directory or a file and displays its size.
If the file object represents a directory (line 20), each subitem (file or subdirectory) in the directory is recursively invoked to obtain its size (line 23). If the file object represents a file (line 26), the file size is obtained and added to the total size (line 27).
What happens if an incorrect or a nonexistent directory is entered? The program will detect that it is not a directory and invoke file.length() (line 27), which returns 0. Thus, in this case, the getSize method will return 0.
To avoid mistakes, it is a good practice to test all cases. For example, you should test the program for an input of file, an empty directory, a nonexistent directory, and a nonexistent file.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3