When the program starts it should ask the user if they would like to dump results to a log file IN ADDITION to standard out. If so, your program should prompt for the name of the log file. If the file already exists, it’s contents should be overwritten.
The program will then display (6) options to the user:
(1) List the contents of a directory provided by the user
(2) List the contents of a directory provided by the user as well as all of its sub directories. (hint: use recursion)
(3) Locate a file with a given name.
(4) Locate files with a given file extension
(5) Concatenate the contents of 2 files whose names are provided by the user and output the result to a third file (name also provided by the user)
In addition, provide additional (useful) options in addition to those listed above. For example, locating files based on regular expression matches in the file name or the file content. Be creative. Have fun.
Design: Make sure to design the program so that the file system functionality is encapsulated in its own class or classes. Specifically, you should design so that it would be trivial to hook up these features to a GUI rather than the command line. (This means the main function should have almost no code in it, and that all command-line user interaction should be separate of file browsing implementation, etc.)