Pages

Thursday, 12 January 2017

Chapter 18 Exercise 28, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

18.28  (Nonrecursive directory size)
Rewrite Listing 18.7, DirectorySize.java, without using recursion.


import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;

public class Exercise_28 {

    public static void main(String[] args) throws FileNotFoundException {

        if (args.length != 1) {
            System.out.println("Usage: directoryOrFilePath");
            System.exit(0);
        }

        File file = new File(args[0]);
        if (!file.isDirectory() && !file.isFile()) {
            System.out.println(file.getAbsoluteFile() + " is not a file or directory");
            System.exit(0);
        }


        long size = 0;
        ArrayList<File> allFiles = new ArrayList<>(500);
        allFiles.add(file);
        for (int i = 0; i < allFiles.size(); i++) {
            File f = allFiles.get(i);
            if (f.isFile())
                size += f.length();
            else if (f.listFiles()!= null && f.listFiles().length != 0)
                Collections.addAll(allFiles, f.listFiles());
        }

        System.out.println("Total size = " + size);
    }

}

No comments:

Post a Comment