Gisonrg
Gisonrg

Reputation: 519

Java - Display relative path to a root directory

I am writing a small Java program to list files in a root directory recursively. This is the code I used.

public static void displayDirectoryContents(File dir) {
    File[] files = dir.listFiles();
    for (File file : files) {
        if (file.isDirectory()) {
            displayDirectoryContents(file);
        } else {
            System.out.println(file.getPath());
        }
    }
}

public static void main(String[] args) throws IOException {
    File currentDir = new File("root-direcotry");
    displayDirectoryContents(currentDir);
}

The result I got is something like:

root-direcotry/1.txt
root-direcotry/2.txt
root-direcotry/t1/a.txt
root-direcotry/t2/b.txt
root-direcotry/t4/c.txt

My question is can I just display the relative path without the "root-direcotry"?

i.e. What I want to achieve is displaying:

/1.txt
/2.txt
/t1/a.txt
/t2/b.txt
/t4/c.txt

I prefer not using any String method to just not display that part. Thank you!

Upvotes: 0

Views: 595

Answers (1)

Jens
Jens

Reputation: 69450

Try this:

public static void displayDirectoryContents(File dir, String rootDir) {
    File[] files = dir.listFiles();
    for (File file : files) {
        if (file.isDirectory()) {
            displayDirectoryContents(file, rootDir);
        } else {
            System.out.println(file.getPath().replaceFirst(rootDir, ""));
        }
    }
}

public static void main(String[] args) throws IOException {
    String rootDir = <rootDir>;
    File currentDir = new File(rootDir);
    displayDirectoryContents(currentDir, rootDir);
}

Upvotes: 1

Related Questions