Does anyone know how to use Java to create sub-directories based on the alphabets (a-z) that is n levels deep?
/a
/a
/a
/b
/c
Since Java 7, java.nio is preferred
import java.nio.file.Files;
import java.nio.file.Paths;
...
Files.createDirectories(Paths.get("a/b/c"));
public static void main(String[] args) {
File root = new File("C:\\SO");
List<String> alphabet = new ArrayList<String>();
for (int i = 0; i < 26; i++) {
alphabet.add(String.valueOf((char)('a' + i)));
}
final int depth = 3;
mkDirs(root, alphabet, depth);
}
public static void mkDirs(File root, List<String> dirs, int depth) {
if (depth == 0) return;
for (String s : dirs) {
File subdir = new File(root, s);
subdir.mkdir();
mkDirs(subdir, dirs, depth - 1);
}
}
mkDirs
recusively creates a depth
-level directory tree based on a given list of String
s, which, in the case of main
, consists of a list of characters in the English alphabet.
You could use three loops over characters a-z
like so:
import java.io.*;
public class FileCreate {
public static void main(String[] args) throws Exception {
char trunkDirectory = 'a';
char branchDirectory = 'a';
char leaf = 'a';
while (trunkDirectory != '{') {
while (branchDirectory != '{') {
while (leaf != '{') {
System.out.println(trunkDirectory + "/" + branchDirectory + "/" + leaf++);
}
leaf = 'a';
branchDirectory++;
}
branchDirectory = 'a';
trunkDirectory++;
}
}
}
This simply outputs the paths to the console. You could use File#mkdirs() to create a recursive directory structure or create the directories in each intermediate part of the nested loop. I'll leave that for you to finish.
You can simply use the mkdirs() method of java.io.File
class.
Example:
new File("C:\\Directory1\\Directory2").mkdirs();
If you're using mkdirs()
(as suggested by @Zhile Zou) and your File
object is a file and not a directory, you can do the following:
// Create the directory structure
file.getParentFile().mkdirs();
// Create the file
file.createNewFile();
If you simply do file.mkdirs()
it will create a folder with the name of the file.
Apache commons addresses most of these. Try -
org.apache.commons.io.FileUtils.forceMkdir(directory);