To add this library to your project, click on JitPack badge. You can also manually add Jar file, you can find jar file in release section.
Demo: I have created two classes for printing FilesStructure.
public class Main { public static void main(String[] args) { File file=new File("./src"); FileTreePrinter treePrinter=new FileTreePrinter(file); treePrinter.visitAndPrint(); // or // StringBuilder sb=treePrinter.visitAndReturn(); // sout(sb); } }
This code will produce below output.
src ├─main │ ├─java │ │ └─com │ │ ├─demo │ │ │ └─Main.java │ │ └─devik │ │ ├─Color.java │ │ ├─file │ │ │ ├─FileTreePrinter.java │ │ │ └─FileTreePrinterColored.java │ │ └─TreePrinter.java │ └─resources └─test └─java
public class Main { public static void main(String[] args) { File file=new File("./src"); FileTreePrinterColored treePrinter=new FileTreePrinterColored(file); treePrinter.visitAndPrint(); // or // StringBuilder sb=treePrinter.visitAndReturn(); // System.out.println(sb); } }
This code will produce below output.
Also in case of FileTreePrinterColored you can set custom colors.
public class Main { public static void main(String[] args) { File file=new File("./src"); FileTreePrinterColored treePrinter=new FileTreePrinterColored(file); treePrinter.setFolderColor(Color.RED); treePrinter.setHiddenFolderColor(Color); treePrinter.setExecutableFileColor(Color); treePrinter.setNonExecutableFileColor(Color); //or treePrinter.setNonExecutableFileColor(Color.valueOf("color asci")); treePrinter.visitAndPrint(); // or // StringBuilder sb=treePrinter.visitAndReturn(); // System.out.println(sb); } }
If you want to print other than file tree than you can use TreePrinter abstract class. In that case you need to implement three methods.
Object obj; TreePrinter treePrinter=new TreePrinter(obj) { @Override public Object[] getChild(Object obj) { return new Object[0]; } @Override public String getValue(Object obj) { return null; } @Override public boolean isLeaf(Object obj) { return false; } }; // Here obj is the root of TreeStructure.
for ie. if you want to print BinaryTree than you can do something like below...
Object obj; //here obj is root of Binary tree TreePrinter treePrinter=new TreePrinter(obj) { @Override public Object[] getChild(Object obj) { Node node=(Node)obj; return new Object[]{node.left,node.right}; } @Override public String getValue(Object obj) { return ((Node)obj).getValue(); } @Override public boolean isLeaf(Object obj) { Node node=(Node)obj; return node.left==null && node.right==null; } }; // Here obj is the root of TreeStructure.