package directoryLister.template; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Vector; import javax.swing.JOptionPane; /** * DirectoryLister class. * This class allows the user to recursively display the contents of a * selected directory in the file system. */ public class DirectoryLister { // ———————————————————————– // Constants // ———————————————————————– // ———————————————————————– // Attributes // ———————————————————————– /** GUI used to display results */ private GUI gui; /** base path of directory to be traversed */ private String basePath; /** Vector of Vectors to store the information for the files/subfolders of the selected folder */ // TODO // ———————————————————————– // Constructors // ———————————————————————– /** * Create a new DirectoryLister that uses the specified GUI. */ public DirectoryLister(GUI gui) { this.gui = gui; } // ———————————————————————– // Methods // ———————————————————————– /** * Allow user to select a directory for traversal. */ public void selectDirectory() { // clear results of any previous traversal gui.resetGUI(); // allow user to select a directory from the file system basePath = gui.getAbsoluteDirectoryPath(); if (basePath != null) { // update the address label on the GUI gui.setAddressLabelText(basePath); // traverse the selected directory, and display the contents showDirectoryContents(basePath); } } /** * Show the directory listing. * An error message is displayed if basePath does not represent a valid directory. * * @param basePath the absolute path of a directory in the file system. */ public void showDirectoryContents(String basePath) { // TODO // This method should function exactly as it did in the Module 3 assignment, // except after the selected directory has been enumerated, the contents should be // sorted in ascending order based on the path of the files/subfolders. } /** * Recursive method to enumerate the contents of a directory. * The results of the enumeration are stored in the Vector folderContents. * * * @param f directory to enumerate */ private void enumerateDirectory(File f) { // TODO // This method should function similarly to the way it did for the Module 3 assignment, with // the following exception: // // Instead of updating the GUI as before, the contents of each file or folder should be placed // into a Vector of size 4. This Vector should then be added to the Vector “folderContents”, // which has been declared as an attribute of this class. // // The Vector folderContents is a Vector of Vectors, where each Vector represents the // information for each file/folder and occupies a single row in the table. // // Information is stored within each row in the following order: // // Column 1: absolute path of file or folder, as a String // Column 2: size of file in kilobytes, or -1 for folders, as a long value // Column 3: type – “File” or “Folder”, as a String // Column 4: date last modified, in milliseconds } // TODO // // Write methods for sorting the contents of the Vector “folderContents” in ascending and // descending order, using the specified column of data as the basis for the sort. }