import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
public class ThreadTest
{
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
Scanner in = new Scanner(System.in);
System.out.println("Please input a Path to list the files:");
String strPath = in.next();
File file = new File(strPath);
FileWriter fileWriter= new FileWriter("D:" + File.separator + "FileList.txt");
try
{
fileWriter.write(strPath + "\r\n");
ListFiles(fileWriter, file, false);
} catch (Exception e)
{
e.printStackTrace();
}
finally
{
fileWriter.close();
}
}
// level 为 前面所有层级文件是否需要输出 "│"
public static void ListFiles(FileWriter fileWriter, File aFile, boolean...level) throws IOException
{
if (!aFile.exists()) return;
File[] files = aFile.listFiles();
if (files == null)
return;
for (int i = 0; i < files.length; i++)
{
for (boolean l : level)
{
if (l)
fileWriter.write("│");
else
fileWriter.write(" ");
} //for (boolean l : level)
if (i == files.length - 1)
fileWriter.write("└" + files[i].getName() + "\r\n");
else
fileWriter.write("├" + files[i].getName() + "\r\n");
// 如果是文件夹,递归
if (files[i].isDirectory())
{
boolean[] lv = Arrays.copyOf(level, level.length+1);
lv[level.length] = (i != files.length - 1);
ListFiles(fileWriter, files[i], lv);;
} //if (files[i].isDirectory())
} //for (int i = 0; i < files.length; i++)
} //public static void ListFiles...
}