Im trying to create a sort of maze of directorys in java. one directory should have 3 other of it within it and those should also have 3 directory in them up until a certain "deepness level" is reached. I tried something but i couldn't get it to work properly, it does create 3 folders in one but not inside of the other folders.
my java code:
private static final int LEVELS = 5;
private static final int FOLDERS_COUNT = 3;
int currentLevel = 0;
public void createFolder(String path) {
//select random name from a list
Random r = new Random();
String newFolderName = nameList[r.nextInt(nameList.length)];
//save the new path with the name
String completePath = path "/" newFolderName;
//create folder
new File(path "/" newFolderName).mkdirs();
//increase the deepness level
currentLevel ;
if(currentLevel <= LEVELS) {
for(int i = 0; i < FOLDERS_COUNT; i ) // do it again 3 times
createFolder(completePath);
}
}
I have a bit of trouble expressing myself if i forgot to mention something important please remind me and i will add it.
CodePudding user response:
if you reach the maximum level return
to stop the recursion:
if(currentLevel > LEVELS 1) {
return;
}
else create a folder. The folder name is the level index instead of a random name from a list to avoid overwrites due to the same folder name:
else if (currentLevel > 1){
String newFolderName = "level" (currentLevel - 2) "_folder" folderIndex;
path = path "/" newFolderName;
new File(path).mkdirs();
}
and finally call createFolders
recursively:
for(int i = 1; i <= FOLDERS_COUNT; i )
createFolders(i, currentLevel, path);
}
Complete code:
private static final int LEVELS = 5;
private static final int FOLDERS_COUNT = 3;
public static void main(String[] args) {
createFolders(1, 1 , "C:/parentFolder");
}
public static void createFolders(int folderIndex, int currentLevel, String path) {
if(currentLevel > LEVELS 1) {
return;
}else if (currentLevel > 1){
String newFolderName = "level" (currentLevel - 2) "_folder" folderIndex;
path = path "/" newFolderName;
new File(path).mkdirs();
}
for(int i = 1; i <= FOLDERS_COUNT; i )
createFolders(i, currentLevel, path);
}