Reputation: 519
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
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