print verzeichnis wie tree befehl

Ich muss einen Verzeichnisbaum drucken. Ich habe den folgenden Code:

public static void main(String[] args) throws Exception
{

  File root = new File("C:\\Users\\User\\Desktop\\example");

  if (!root.isDirectory())
  {
    throw new IllegalArgumentException("Invalid directory: " + root.getName());
  }

  int level = 0;
  System.out.println(renderFolder(root, level, new StringBuilder(), false));
}

private static StringBuilder renderFolder(File folder, int level, StringBuilder sb, boolean isLast)
{
  indent(sb, level, isLast).append(folder.getName()).append("\n");

  File[] objects = folder.listFiles();

  for (int i = 0; i < objects.length; i++)
  {
    boolean last = ((i + 1) == objects.length);

    if (objects[i].isDirectory())
    {
      renderFolder(objects[i], level + 1, sb, last);
    }
  }
  return sb;
}


private static StringBuilder indent(StringBuilder sb, int level, boolean isLast)
{

  for (int i = 1; i < level; i++)
  {
     sb.append("\u2502   ");
  }

  if (level > 0)
  {
    sb.append(isLast
      ? "\u2514\u2500\u2500"
      : "\u251c\u2500\u2500");
  }

  return sb;
}

mit dieser Ausgabe:

example
├──a
└──b
│   └──b1
│   │   ├──b11
│   │   │   └──b111
│   │   └──b12
│   │   │   ├──b121
│   │   │   └──b122
│   │   │   │   └──b1221

Ich habe es nicht geschafft, die nutzlosen tiefen Linien zu entfernen. Wie macht man das
Auch meine Antwort lautet: "Wie kann ich Linien verbunden halten (so viel wie der Befehl cmd tree)?"

Antworten auf die Frage(6)

Ihre Antwort auf die Frage