java遍历文件夹目录时输出怎么先输出文件夹名,再输出文件名?

package treeFileShow;

import java.io.*;

public class TreeFileShow {
//生命show 方法,展示树状图
public static void show(File f, int level) {
String str = " ";
for (int i = 0; i < level; i++) {
str += " \t ";
}
File[] file = f.listFiles();
for (int i = 0; i < file.length; i++) {
System.out.println(str + file[i].getName());// str 加缩进
if (!file[i].isFile() && file.length != 0) {
show(file[i], level + 1);
}
}
}

public static void main(String[] args) {
    File f = new File("D:/歌曲");
    System.out.println(f.getName());
    show(f, 1);
}

}

现在输出是这样文件在上,文件夹在下,我想把华语歌曲、古风歌曲等这几个文件夹放在上面。

一个简单的算法问题吗,自己写个变量List用来存文件名,循环的时候先判断是否是文件夹,是文件夹就输出,不是文件夹就放到list中,
在循环的最后一个时,把list内容输出

图片说明